[2014-9-9]反射
1.反射即是获取一个运行程序或其他程序的元数据
2.type类是一个抽象类,不能被实例化,用来包含类型的数据
Type t = myInstance.GetType();
Type t =Typeof(myInstance);
3.特性(attribute)
特性是一种向程序集增加元数据的语言结构,特性片被方括号包围,其中是特性名和特性的参数列表
Obsolete特性 将程序结构标注为过期
Conditional特性 包含或者排斥特性方法的所有调用
3.1多个特性
独立特性相互重叠在一起,单个特性片段,特性之间用逗号分开。
特性为字段和方法上的特性
3.2自定义特性
声明一个派生自 System.Attribute类 后缀为Attribuete结尾的名称
建议声明为sealed特性类
公共成员为 字段,属性,构造函数
对于字段,声明指定了使用单个字符串的构造函数,对于方法,声明指定了使用了两个字符串的构造函数
3.3 构造函数中位置参数和命名参数
命名参数设置特性的字段或者属性的值
[MyAttribute("class","Reliever=arr",ver="0.1")] 后面两个为命名参数
4 IsDefined方法,检测某个特性是否应用于某个类
t.IsDefined(typeof(MyAttribute),false)
第一个参数 接受检查特性type对象
第二个参数 是否搜素继承树来查找这个特性
5 GetCustomAttribute 方法 返回应用到结构的特性的数组
Object[] arr =t.GetCustomAttribute(false)