AttributeUsage是一個(gè)特性,用于指定如何使用自定義特性。在C#中,可以通過AttributeUsage特性來指定自定義特性可以應(yīng)用的目標(biāo)類型和使用方式。
以下是AttributeUsage特性的使用示例:
using System;
// 自定義特性
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
public class CustomAttribute : Attribute
{
public string Name { get; set; }
public CustomAttribute(string name)
{
Name = name;
}
}
// 使用自定義特性
[Custom("ClassAttribute")]
public class MyClass
{
[Custom("MethodAttribute")]
public void MyMethod()
{
Console.WriteLine("Hello, World!");
}
}
class Program
{
static void Main(string[] args)
{
// 獲取類上的特性
var classAttributes = typeof(MyClass).GetCustomAttributes(typeof(CustomAttribute), false);
foreach (CustomAttribute attribute in classAttributes)
{
Console.WriteLine(attribute.Name);
}
// 獲取方法上的特性
var methodAttributes = typeof(MyClass).GetMethod("MyMethod").GetCustomAttributes(typeof(CustomAttribute), false);
foreach (CustomAttribute attribute in methodAttributes)
{
Console.WriteLine(attribute.Name);
}
}
}
在上面的示例中,我們定義了一個(gè)CustomAttribute特性,并使用AttributeUsage特性指定了該特性可以應(yīng)用于類和方法。然后,在MyClass類和MyMethod方法上應(yīng)用了CustomAttribute特性。
在Main方法中,我們使用反射獲取了MyClass類和MyMethod方法上的CustomAttribute特性,并輸出了特性的Name屬性值。
請(qǐng)注意,AttributeUsage特性的構(gòu)造函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)用于指定特性可以應(yīng)用的目標(biāo)類型(可以是一個(gè)或多個(gè)),第二個(gè)參數(shù)用于指定是否允許多次應(yīng)用該特性。在示例中,我們指定了CustomAttribute特性可以應(yīng)用于類和方法,并允許多次應(yīng)用。