1.获取 类型信息的方法
SportsCar sc = new SportsCar();
Type t = sc.GetType();
或
Type t = typeof(SportsCar);
typeof:不需要先建立一个实例来提取类型信息,但必须指定类型的编译时信息,因为,typeof需要的是强类型的类型信息;
2. System.Type.GetType()得到Type引用
System.Type.GetType("类型的完全限定名"):可以接受任何字符串(而不是强类型的变量);
GetType()重载方法GetType(class,bool1 , bool2)
class:类型的完全限定名;
1.当前程序集中类型信息:直接指定类型字符串;
2.外部私有的程序集的类型信息:必须使用类型完全限定名和程序集名称(每个都用都好隔开);
3.获取嵌套类型:类型字符串指定一个 + 标记;
bool1:控制当类型找不到时是否抛出异常(布尔类型);
bool2:指示是否区分字符串大小写(布尔类型);
示例如下:
A.获取程序集内类型信息: Type t = Type.GetType("CarLibrary.SportsCar",false,true);
B.获取外部私有的程序集的类型信息:Type t = Type.GetType("CarLibrary.SportsCar ,CarLibrary",false,true);
C.获取嵌套类型:Type t = Type.GetType("CarLibrary.SportsCar +SpyOptions",false,true);
4. BindingFlags枚举值得重载,可以对要搜索的内容进行较大的控制(如:只搜索静态成员或只搜索公共成员等);
3.反射
3.1.命名空间:System.Reflection;
3.2.System.Reflection命名空间成员列表:
Assembly:该抽象类包含了许多静态方法,通过它可以加载、了解和操纵一个程序集;
AssemblyName:使用该类可以找到大量隐藏在程序集的身份中的细节(版本信息、区域信息等);
EventInfo:该抽象类保存给定事件的信息;
FieldInfo:该抽象类包含给定字段信息;
MemberInfo:该类是抽象类的基类,它为EventInfo、FieldInfo、MethodInfo和 PropertyInfo类型定义了公共的行为;
MethodInfo:该抽象类包含给定方法的信息;
Module:该抽象类使你可以访问多文件程序集中的给定模块;
ParameterInfo:该类保存给定参数的信息;
PropertyInfo:该抽象类保存给定属性信息;
4.反射泛型类型:
4.1获取泛型类型的元数据,必须使用包含“反勾号”(`)加上数字值的语法来表示类型支持的类型参数个数;
例如:输出System.Collections.Generic.List<T>元数据描述
System.Collections.Generic.List`1
表示:输出List集合中指定一个类型参数;
例如:输出Dictionary<TKey,TValue> 字典,需要两个类型参数:
System.Collections.Generic.Dictionary`2
5.反射获取程序集(没看完--456)
6.反射共享程序集(没看完--457)