C# 特性 Attribute
特性就是在類的類名稱、屬性、方法等上面加一個標記,使這些類、屬性、方法等具有某些統一的特征,從而達到某些特殊的需要。舉個小栗子:方法的異常捕捉,你是否還在某些可能出現異常的地方(例如數據庫的操作、文件的操作等)經常使用try...catch。這個時候如果使用特性,就可 以大大減少方法里面的try...catch的使用。你只需要定義一個專門捕捉異常的特性類ExceptionExAttribute,然后給這個特性類 做些特殊處理,比如給它增加一個AOP攔截的功能(AOP攔截的方式很多,有興趣可以搜搜看,園子里面很多類似的文章)。那么在可能出現異常的方法名稱上 面加上一個[ExceptionEx]特性標簽,這個方法就具有自動捕捉異常的能力。由此可見,特性可以減少統一需求的代碼量.
官方描述:
特性(Attribute)是用于在運行時傳遞程序中各種元素(比如類、方法、結構、枚舉、組件等)的行為信息的聲明性標簽。您可以通過使用特性向程序添加聲明性信息。一個聲明性標簽是通過放置在它所應用的元素前面的方括號([ ])來描述的。
特性(Attribute)用于添加元數據,如編譯器指令和注釋、描述、方法、類等其他信息。.Net 框架提供了兩種類型的特性:預定義特性和自定義特性
1.預定義特性
.Net 框架提供了三種預定義特性:
·AttributeUsage 起條件編譯的作用,只有滿足條件,才允許編譯器對它的代碼進行編譯。一般在程序調試的時候使用。
·Conditional 描述了如何使用一個自定義特性類。它規定了特性可應用到的項目的類型。
·Obsolete 這個屬性用來標記當前的方法已經被廢棄,不再使用了。
舉個小栗子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();}實際上是這樣
2.自定義特性
特性是給目標類型添加描述性的元數據,它不會影響代碼的運行。自定義特性的命名必須以Attribute結尾,如DefinedAttribute, 而在使用的時候可以直接用[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");}}?
轉載于:https://www.cnblogs.com/miaoying/p/5022253.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的C# 特性 Attribute的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到小孩骑马是什么意思
- 下一篇: C#获取存储过程的 Return返回值和