C#attribute-----------初級

來源:互聯網
上載者:User

標籤:c# attribute

前言:

attribute是 .net FrameWork 提出的技術,可以為自己的代碼添加註解,從而實現些特殊功能。

一. attribute功能

attribute被譯作特性,既然是特性,必然功能不一般。

1.微軟的說法

MSDN給出的attribute功能:Attribute類將預定義的系統資訊或使用者定義的自訂資訊與目標元素相關聯。

預定義的系統的資訊也就是.net給出的系統attribute,使用者自訂的資訊也就是使用者定義的attribute。目標元素呢就是指中繼資料的元素TypeDef(類,結構,枚舉,介面,委託),MethodDef,ParamDef,FieldDef,PropertyDef.等等。


2. 自己的看法

無論是定製的Attribute(系統),還是自訂的Attribute 其目的都是為了增強 對你目標元素的修飾。就好比public,private這種修飾符是為了控制對中繼資料的存取權限。注釋是為了方便其他人閱讀理解代碼。那麼應用Attribute的場合就是當我需要對中繼資料進行修飾。那麼問題來了,Attribute究竟能提供什麼樣的特性,讓我們必須要使用它來修飾中繼資料呢

1)設定我們的Assembly資訊

我們建立一個工程時,系統會自動產生一個Assemblyinfo.cs,這個檔案就應用了大量了Attribute,為我們提供者集資訊

[assembly: AssemblyTitle("AttributeTest")] //名稱
[assembly: AssemblyDescription("")] 
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]//程式集公司

2)測試時經常用到的,ConitionAttribute,一個工程中需要測試的方法有很多,你把他歸為幾類,然後分別進行測試。總不能測試這類的代碼就注釋掉其他的代碼嘛。這樣做也太low了。這時候就可以利用ConitionAttribute特性

給各類代碼標示上不同的特性。然後在開頭使用#define  AttributeName.想測試哪類就使用哪類Attribute名字。

eg。

工程中有兩類方法

[Conition("A")]

public void method1()

public void method2()

[Conition("B")]

public void method3()

public void method4()

然後在開頭加上#define A

這樣運行時就會只識別method1(),method2()

3)上面兩種都是系統提供的定製Attribute,那麼什麼時候使用自訂的呢

有需求的時候其他東西又實現不了的時候就可以考慮自訂Attribute了

比如說,我現在做資料庫表的實體類,這樣取資料的時候綁定到實體類,不用一個個賦值。資料庫中的列對應著實體類的屬性。在select 表時,將結果綁定到實體類,你需要遍曆實體類屬性,所以你必須確保實體類中的都是屬性而不是欄位或其他什麼。那麼你如何做到這一點呢,怎麼修飾這個中繼資料使之一定是屬性呢:自訂attribute

[AttributeUsage(AttributeTargets.Property)]//指定目標元素只能是屬性
class RetriveFromDb : Attribute
{

}


[RetriveFromDb]

public string ID { get; set; }//是property,編譯通過


[RetriveFromDb]

public string GRADE = "98";//field,編譯不通過

本篇只解釋了Attribute功能。後續講解Attribute特點和如何使用

C#attribute-----------初級

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.