反射
1.自定义特性
1.1编写自定义特性
1 [AttributeUsage(AttributeTargets.Property, 2 AllowMultiple =false, 3 Inherited = false)] 4 class FieldNameAttribute:Attribute 5 { 6 private string name; 7 8 public FieldNameAttribute(string name) 9 { 10 this.name = name; 11 } 12 }
(1)AttributeUsage特性
AttributeUsage主要用于标示自定义特性可以应用到哪些类型的程序元素上。这些信息由它的第一个参数给出,该参数是必选的,其类型是枚举类型AttributeTargets。
反射
1.System.Type类
(1)获取指向任何给定类型的Type引用有3种常用方式:
(1.1)使用C#的typeof运算符
Type = typeof(double);
(1.2)使用GetType()方法
double b = 10;
Type t = b.GetType();
(1.3)调用Type类的静态方法GetType():
Type t = Type.GetType("System.Double");
2.Assembly类
加载程序集使用静态成员Assembly.Load()和Assembly.LoadForm()
Assembly.Load()参数是程序集的名称。
Assembly.LoadForm()参数是程序集的完整路径名。
2.1查找程序集中定义的类型
Assembly.GetTypes()
2.2查找自定义类型
Attribute.GetCustomAttributes(assembly1);