反射和正则基础

一、反射
a)通过反射可以动态地创建对象、赋值或者调用方法。MVC、EF等各种框架都会用到反射,还有VS的智能感知、监视功能也利用了反射。
反射的基础类为Type,每个类对应一个Type对象,每个方法、属性分别对应MethodInfo和PropertyInfo对象,这些就是类、方法、属性的元数据(Meta Data)。
b) 获取一个类的Type对象有下面几种方法,可根据场景需要选择适合的方式:
var p1 = new Person();
//1 通过实例化后的对象获取
var t1 = p1.GetType();
//2 通过类直接获取
var t2 = typeof(Person);
//3 通过类所在的程序集获取
var t3 = Type.GetType(" _6._1_Reflect.Person");

c) Type类的方法很多,这儿学习GetMethod的基本使用,Person类的Hello方法有两个重载
class Person {
  public void Hello() {
    Console.WriteLine("Hello I'm **");
  }
  public void Hello(string s) {
    Console.WriteLine(s);
  }
}

Type t1 = typeof(Person);
CreateInstance用于创建类的实例
var obj = Activator.CreateInstance(t1);
GetMethod用于取得某个方法,要区分两个Hello重载,需要在第二个参数中传入签名信息以帮助识别,一个string参数时传入new Type[] { typeof(string)},无参时传入new Type[0]。
MethodInfo miHello = t1.GetMethod("Hello", new Type[0]);
miHello.Invoke(obj, new object[0]);
MethodInfo miHello1 = t1.GetMethod("Hello", new Type[] { typeof(string)});
miHello1.Invoke(obj, new object[] { "s" });
获取到方法后,使用Invoke方法来调用,同时可以传入参数。

二、正则
正则用于匹配字符串,正则相关的知识博大精深、用途广泛,先把匹配、校验字符串这样的用途学会吧。
正则的基本元字符有:
  . 除了 以外的任意的单个字符
  [0-9] 0-9之间的任意一个数字
  d 数字
  D 非数字
  a 空白
  S 非空白
  w 小写字符和数字、汉字
  W 特殊符号
  对于.等特殊字符转义
  () 提升优先级、提取组
  | 或者
  + 出现1到无限次
  * 出现0到无限次
  ? 出现0-1次
  {1,2}一次或两次,{1,} 最少一次
  ^ 开始
  $ 结束
先了解一点点,下篇继续学习正则。另外SQL中like语句除了常用的%外,还有_,%用于匹配任意多个字符,_则用于匹配一个字符。


学习资料:如鹏网.net提高班http://www.rupeng.com/News/10/4603.shtml

原文地址:https://www.cnblogs.com/zhixin9001/p/7701855.html