c#特性:
特性(Attribute)是用于在運行時傳遞程序中的各種元素(比如類,方法,結(jié)構(gòu),枚舉,組件等)的行為信息的聲明標簽。可以通過使用特性向程序添加聲明性信息。一個聲明性標簽時通過放置在它它所應(yīng)用的元素前面的方括號來描述的。
特性(Attribute)用于添加元數(shù)據(jù),如編譯器指令和注釋,描述,方法等其他信息。.Net框架提供了兩種類型的特性:預(yù)定義特性和自定義特性。
【一】 介紹
在C#中的有三個重要的名詞:字段,屬性,特性。
字段: 一般變量都是字段。 可以通過Type.GetField("name")獲取
如public string str;
private int num;
屬性: 當使用了屬性訪問器get set的時候,我們稱之為屬性。通過Type.GetProperty("name")獲取
特性:下面我們就來重點說特性。
? 特性是一切繼承自Attribute的類。是一種可由用戶自定義的修飾符。它不能通過new實例化。只能通過附著在類,struct或者變量前面通過 [構(gòu)造函數(shù)] 實例化,如果有參數(shù)的話,就是[構(gòu)造函數(shù)(參數(shù))]。為附著體追加額外的信息。一般來說,特性不能影響程序本身,但它會被編譯器編譯到程序集(Assembly)的元數(shù)據(jù)(Metadata)里,比注釋有更多的作用:
1. 供編譯器使用
2. Unity識別,如導(dǎo)航菜單欄菜單項,自定義Inspector等。
3. 做對程序本身的 功能
【二】特性步驟
得到type
得到函數(shù),字段,屬性等的信息
得到特性
處理
得到type
通過? typeof(類) 或者 對象.GetType(), 或者Assembly.GetType("name")
2.得到函數(shù),字段,屬性等的信息。注意只有public的才能獲取。
字段 FieldInfo通過 type.GetField("num");
屬性 PropertyInfo 通過 type.GetProperties());
方法 MethodInfo 通過 type.GetMethods();
得到特性
Attribute.GetCustomAttributes(mInfo)
4.處理
簡單來講,特性可以為附著體增加額外信息。