1.特性是什么?
Attribute用来对类、属性、方法等标注额外的信息,贴一个标签(附着物)
通俗:给 类 或 类成员 贴一个标签,就像航空部为你的行李贴一个标签一样
个人理解,特性就是修饰对象元数据的修饰符。
图中的
1.是特性 2.是访问修饰符
3.声明修饰符 4.数据类型
5.变量名 6.变量数据值
其中1、2、3、4、5就是元数据,用来描述数据(6)的数据。
2.特性到底是什么?
如上面的 Obsolete ,会不会也是一个如 public 、 static 这样类似的修饰符呢,我们且看看反编译后的中间语言。
意料之外,我们看到了上面的2、3、4、5,而1(特性)怎么跑到里面去了,且是一种看不懂的东东,反正我们知道了不是类似的修饰符。
然后我们接着在vs里面把光标移到 Obsolete 上按F12,如:
原来只是一个继承了 Attrbute 的一个类(class)。那么上面我们看不懂的部分应该就是这个 ObsoleteAttribute 类的实例化了。
我们来回答上面问题:特性到底是什么?特性只是一个类而已。
3.自定义特性
我们看到上面系统特性 Obsolete 上面还有特性,如:Serializable、AttributeUsage、Camvisible等。像这种特性我们称之为“元数据的元数据”(元元数据)。
1.我们分别来解释性上面的三个特性。
Serializable:表示类型支持序列化。
ComVisible:微软定义“控制程序集中个别托管类型、 成员或所有类型对COM的可访问性”。
AttributeUsage:这个比较重要了,基本上每个特性定义都用到了它。它就是用来表示当前这个特性可用于哪些对象。如:类、方法、属性...等等。(只需要用到这个我们就可以自定义特性了)
时间: 2024-10-05 22:17:53