C# 特性 Attribute
特性就是在類的類名稱、屬性、方法等上面加一個(gè)標(biāo)記,使這些類、屬性、方法等具有某些統(tǒng)一的特征,從而達(dá)到某些特殊的需要。舉個(gè)小栗子:方法的異常捕捉,你是否還在某些可能出現(xiàn)異常的地方(例如數(shù)據(jù)庫的操作、文件的操作等)經(jīng)常使用try...catch。這個(gè)時(shí)候如果使用特性,就可 以大大減少方法里面的try...catch的使用。你只需要定義一個(gè)專門捕捉異常的特性類ExceptionExAttribute,然后給這個(gè)特性類 做些特殊處理,比如給它增加一個(gè)AOP攔截的功能(AOP攔截的方式很多,有興趣可以搜搜看,園子里面很多類似的文章)。那么在可能出現(xiàn)異常的方法名稱上 面加上一個(gè)[ExceptionEx]特性標(biāo)簽,這個(gè)方法就具有自動(dòng)捕捉異常的能力。由此可見,特性可以減少統(tǒng)一需求的代碼量.
官方描述:
特性(Attribute)是用于在運(yùn)行時(shí)傳遞程序中各種元素(比如類、方法、結(jié)構(gòu)、枚舉、組件等)的行為信息的聲明性標(biāo)簽。您可以通過使用特性向程序添加聲明性信息。一個(gè)聲明性標(biāo)簽是通過放置在它所應(yīng)用的元素前面的方括號(hào)([ ])來描述的。
特性(Attribute)用于添加元數(shù)據(jù),如編譯器指令和注釋、描述、方法、類等其他信息。.Net 框架提供了兩種類型的特性:預(yù)定義特性和自定義特性
1.預(yù)定義特性
.Net 框架提供了三種預(yù)定義特性:
·AttributeUsage 起條件編譯的作用,只有滿足條件,才允許編譯器對(duì)它的代碼進(jìn)行編譯。一般在程序調(diào)試的時(shí)候使用。
·Conditional 描述了如何使用一個(gè)自定義特性類。它規(guī)定了特性可應(yīng)用到的項(xiàng)目的類型。
·Obsolete 這個(gè)屬性用來標(biāo)記當(dāng)前的方法已經(jīng)被廢棄,不再使用了。
舉個(gè)小栗子a如下:
[Obsolete("Don't use OldMethod, use NewMethod instead", true)]static void OldMethod(){Console.WriteLine("It is the old method");}static void NewMethod(){Console.WriteLine("It is the new method");}static void Main(string[] args){OldMethod();NewMethod();Console.ReadKey();}實(shí)際上是這樣
2.自定義特性
特性是給目標(biāo)類型添加描述性的元數(shù)據(jù),它不會(huì)影響代碼的運(yùn)行。自定義特性的命名必須以Attribute結(jié)尾,如DefinedAttribute, 而在使用的時(shí)候可以直接用[Defined]或者[DefinedAttribute]
小栗子b如下:
public class DefinedAttribute:Attribute{private string Name { get; set; }private string Sex { get; set; }public DefinedAttribute(string _Name,string _Sex){this.Name = _Name;this.Sex = _Sex;}}public class TestAttribute{[Defined("小明","男")][Defined("張偉","女")]public void A(){Console.WriteLine("111");}}?
轉(zhuǎn)載于:https://www.cnblogs.com/miaoying/p/5022253.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的C# 特性 Attribute的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到小孩骑马是什么意思
- 下一篇: 做梦梦到熊猫是什么征兆