建立自訂屬性 (C# 和 Visual Basic)
您可以藉由定義屬性類別來建立自己的自訂屬性,屬性類別是一種直接或間接從 Attribute 衍生的類別,可以在中繼資料中快速且容易地辨識屬性定義。 假設您想要對型別標記上撰寫該型別的程式設計人員名字。 您或許可以定義自訂的 Author 屬性類別:
<System.AttributeUsage(System.AttributeTargets.Class Or
System.AttributeTargets.Struct)>
Public Class Author
Inherits System.Attribute
Private name As String
Public version As Double
Sub New(ByVal authorName As String)
name = authorName
version = 1.0
End Sub
End Class
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class Author : System.Attribute
{
private string name;
public double version;
public Author(string name)
{
this.name = name;
version = 1.0;
}
}
這個類別名稱是 Author 屬性的名稱。 由於是從 System.Attribute 衍生,所以這是自訂的屬性類別。 這個建構函式的參數是自訂屬性的位置參數。 在這個範例中,name 就是位置參數。 任何公用的可讀寫欄位或屬性都是具名參數。 在這個案例中,version 是唯一的具名參數。 請注意,只有在類別與 struct (在 Visual Basic 中為 Structure) 宣告中才能利用 AttributeUsage 屬性讓 Author 屬性變成有效。
您可透過下列方式使用這項新的屬性:
<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
' P. Ackerman's code goes here...
End Class
[Author("P. Ackerman", version = 1.1)]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage 有一個具名參數 AllowMultiple,您可藉此將自訂屬性設為單次使用或多次使用。 下列程式碼範例會建立多次使用的屬性。
' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
System.AttributeTargets.Struct,
AllowMultiple:=True)>
Public Class Author
Inherits System.Attribute
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // multiuse attribute
]
public class Author : System.Attribute
下列程式碼範例會將相同型別的多個屬性套用到類別。
<Author("P. Ackerman", Version:=1.1),
Author("R. Koch", Version:=1.2)>
Class SampleClass
' P. Ackerman's code goes here...
' R. Koch's code goes here...
End Class
[Author("P. Ackerman", version = 1.1)]
[Author("R. Koch", version = 1.2)]
class SampleClass
{
// P. Ackerman's code goes here...
// R. Koch's code goes here...
}
注意事項 |
---|
如果您的屬性 (Attribute) 類別包含屬性 (Property),該屬性 (Property) 必須可讀寫。 |
請參閱
參考
AttributeUsage (C# 和 Visual Basic)