C#學習筆記–Attribute

來源:互聯網
上載者:User
直接或間接繼承自System.Attribute的類是Attribute,按照約定,屬性的名字應該帶一個Attribute的尾碼,當然不帶也不會引起編譯時間的錯誤,只不過需要注意的是以下內容using System;

[AttributeUsage(AttributeTargets.All)]

public class XAttribute: Attribute

{}

[X]                       // Refers to XAttribute

class Class1 {}

[XAttribute]              // Refers to XAttribute

class Class2 {}

[@X]                      // Error: no attribute named "X"

class Class3 {}

看過上面的代碼應該知道了,@可以去掉二義性.還有一點,[XAttribute]是沒有二義性的,即使還有個屬性叫做[XAttributeAttribute].
另一個內容是關於Attribute的參數的,它可以有兩類參數位置參數(Positional Parameters)和具名引數(Named Parameters).見如下代碼using System;

[AttributeUsage(AttributeTargets.Class)]

public class HelpAttribute: Attribute

{

    public HelpAttribute(string url) {    // Positional parameter

        

    }

    public string Topic {                 // Named parameter

        get {}

        set {}

    }

    public string Url {

        get {}

    }

}

每一個共有的執行個體(不是static)構造器都可以定義一系列位置參數,而非靜態可讀寫欄位和屬性可以定義具名引數.
三個保留的屬性:
1.System.AttributeUsageAttribute 用來定義屬性使用的方式.被該屬性修飾的類必須是直接或者間接繼承自System.Attribute,否則將會有編譯時間錯誤.有一個枚舉類型的位置參數AttributeTargets,表示定義的屬性可以應用到什麼身上.兩個具名引數AllowMultiple (代表該屬性是否可以多次用在統一對象上)和Inherited (表示當該屬性用到基類的時候,該屬性是否會自動添加到衍生類別上).
2.System.Diagnostics.ConditionalAttribute 用來標誌一個條件方法,通過測試編譯條件來決建立一個條件.是否調用被標記屬性ConditionalAttribute 的方法,取決於在調用的地方(不是被調用的地方)是否有編譯條件.這個屬性有一個位置參數string conditionString表示條件.條件方法有如下限制:
a)條件屬性只能定義在類或者結構的方法上,如果定義在介面的方法上就會有編譯錯誤.
b)條件屬性只能定義在傳回型別為void的方法上.
C)條件屬性不能用在用override修飾的方法上.條件屬性可以應用於有virtual的方法上,並且隱含地應用於重載該方法的方法上,但不能顯式地定義某個用override修飾的方法.
d)條件屬性也不能應用於實現介面的方法的方法上.否則將引發編譯時間錯誤(條件成員**方法不能實現介面**方法).
3.System.Obsolete 用來表徵一個類型或者一個類型的成員不再使用了.該屬性有三個執行個體建構函式,於是有三個位置參數定位序列.其中最多的有兩個參數string message(當用戶端代碼調用這個類型或者類型的成員時的提示資訊, bool error(預設為false當代碼被注釋時為警告,如果為ture則顯示為編譯錯誤)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.