AttributeUsage是一個用于指定自定義屬性的使用規范的特性類。通過使用AttributeUsage特性,可以限制自定義屬性只能應用于特定的程序元素,例如類、方法、字段等。
AttributeUsage特性有三個參數:
ValidOn:指定自定義屬性可以應用的程序元素類型。可以通過多個參數值進行組合,常用的參數值包括:AttributeTargets.Assembly(程序集)、AttributeTargets.Class(類)、AttributeTargets.Method(方法)、AttributeTargets.Property(屬性)、AttributeTargets.Field(字段)等。
AllowMultiple:指定自定義屬性是否可以多次應用于同一個程序元素。如果設置為true,則可以多次應用;如果設置為false,則只能應用一次。默認值為false。
Inherited:指定自定義屬性是否可以被繼承。如果設置為true,則子類會繼承父類的屬性;如果設置為false,則子類不會繼承父類的屬性。默認值為true。
下面是一個示例代碼:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class CustomAttribute : Attribute
{
// 自定義屬性的代碼邏輯
}
[Custom] // 只能應用于類和方法
public class MyClass
{
[Custom] // 只能應用于類和方法
public void MyMethod()
{
// 方法的代碼邏輯
}
}
在上述示例中,CustomAttribute只能應用于類和方法,且不能多次應用。同時,該屬性會被子類繼承。因此,MyClass類和MyMethod方法都可以應用CustomAttribute。