特性
特性Attribute---------一般放置在类前 属性前 方法前等使用这个特性 对类 属性 方法 附带一些解释的信息
书写格式---------特性的特点 [特性名(参数列表)]
例如:
1 不带参数的特性 : [Serializable] 定义类前 表示这个类可以被序列化
2 带参数的特性:[Browsablae(true)] 允许属性可以显示窗体属性面板上
带多个参数特性 [特性名("参数1","参数2")]
使用特性 可以使用多个特性
特性的分类 预定义特性和自定义特性
预定义特性 net提供内置的特性
0bsolete: 定义某个属性或者方法是过时,然后会再提示请使用其他方法进行替代
Obsolete(参数1,参数22)
参数1是一个提示信息 字符串格式
参数2是一个bool值 是不是一个错误,如果是true直接报红色错误
Conditional 条件编译 根据这个特性设置的条件执行对应方法
语法:语法[Conditional(参数1)] 参数1是一个条件
自定义特性
创建自定义特性步骤:
1声明自定义特性(创建一个自定义特性类)
2构建自定义特性
3在目标程序上应用自定义特性
4通过反射访问特性,(通过自定义特性访问类型属性和方法)
添加特性使用的地方 例如特性在类前面 、方法前 、字段前等地方进行使用
例如:class 允许特性写在类前面、Constructor 允许特性写在函数前面、Property 允许特性写在属性前面、AllowMultiple 是否允许多用
例子:
创建一个自定义特性:
Attribute 属于特性的基类 任何特性都是继承于Attribute
构建特性功能:根据特性知道当前这个代码开发人员,修改的最后日期,bug的编号等信息
添加属性和方法
每个特性都需要实现至少一个构造函数
私有的属性可以通过构造函数进行赋值
public 可以使用特性进行公开赋值
![](https://i-blog.csdnimg.cn/blog_migrate/8ebae34aa539011975991a3cf69fd4b9.png)
主知识点辅例子,不积跬步无以至千里,不积小流无以成江河