c#特性
c#特性:
特性(Attribute)是用于在运行时传递程序中的各种元素(比如类,方法,结构,枚举,组件等)的行为信息的声明标签。可以通过使用特性向程序添加声明性信息。一个声明性标签时通过放置在它它所应用的元素前面的方括号来描述的。
特性(Attribute)用于添加元数据,如编译器指令和注释,描述,方法等其他信息。.Net框架提供了两种类型的特性:预定义特性和自定义特性。
【一】 介绍
在C#中的有三个重要的名词:字段,属性,特性。
字段: 一般变量都是字段。 可以通过Type.GetField("name")获取
如public string str;
private int num;
属性: 当使用了属性访问器get set的时候,我们称之为属性。通过Type.GetProperty("name")获取
特性:下面我们就来重点说特性。
特性是一切继承自Attribute的类。是一种可由用户自定义的修饰符。它不能通过new实例化。只能通过附着在类,struct或者变量前面通过 [构造函数] 实例化,如果有参数的话,就是[构造函数(参数)]。为附着体追加额外的信息。一般来说,特性不能影响程序本身,但它会被编译器编译到程序集(Assembly)的元数据(Metadata)里,比注释有更多的作用:
1. 供编译器使用
2. Unity识别,如导航菜单栏菜单项,自定义Inspector等。
3. 做对程序本身的 功能
【二】特性步骤
1 得到type
2 得到函数,字段,属性等的信息
3 得到特性
4 处理
1 得到type
通过 typeof(类) 或者 对象.GetType(), 或者Assembly.GetType("name")
2.得到函数,字段,属性等的信息。注意只有public的才能获取。
字段 FieldInfo通过 type.GetField("num");
属性 PropertyInfo 通过 type.GetProperties());
方法 MethodInfo 通过 type.GetMethods();
3 得到特性
Attribute.GetCustomAttributes(mInfo)
4.处理
简单来讲,特性可以为附着体增加额外信息。