如果您现在对反射还不太了解的话,那么可以先看看这篇博文,来粗略的了解一下反射吧。什么是反射
上面这个提示是在VS中的,大家在编程的过程中应该有遇到过的。
1.1 System.ObsoleteAttribute 特性
这样的的确确是可以记录下来,但是如果有一天我们想将这些记录保存到数据库中作以备份呢?你是不是要一个一个地去查看源文件,找出这些注释,再一条条插入数据库中呢?
按照对于附加到DemoClass类上的元数据的理解,我们先创建一个封装了元数据的类RecordAttribute:
首先,我们应该发现,它继承自Attribute类,这说明我们的RecordAttribute也应该继承自Attribute类。
这里大家一定疑惑为什么会这样划分参数,这和特性的使用是相关的。假如AttributeUsageAttribute 是一个普通的类,我们一定是这样使用的:
假设现在我们的RecordAttribute已经OK了,则它的使用应该是这样的:
其中recordType, author 和 date 是位置参数,Memo是命名参数。
AttributeTargets 是一个位标记,它定义了特性可以应用的类型和对象。
而ObsoleteAttribute特性上加载的 AttributeUsage是这样的:
因为AttributeUsage是一个位标记,所以可以使用按位或“|”来进行组合。所以,当我们这样写时:
2.4 Inherited 和 AllowMutiple属性
AllowMutiple 属性用于设置该特性是不是可以重复地添加到一个类型上(默认为false),就好像这样:
所以,我们必须显示的将AllowMutiple设置为True。
这段程序简单地在屏幕上输出一个“This is a demo class”。我们的属性也好像使用“//”来注释一样对程序没有任何影响,实际上,我们添加的数据已经作为元数据添加到了程序集中。
联系客服