在C#中,AttributeUsage
是一個元數據屬性,用于指定自定義屬性可以應用于哪些程序元素(如類、方法、屬性等)。它定義在System.AttributeUsage
命名空間下。要定義一個自定義屬性并使用AttributeUsage
,請按照以下步驟操作:
System.Attribute
。[AttributeUsage]
屬性來指定屬性的使用范圍。AttributeUsage
接受一個AttributeTargets
枚舉值,該枚舉表示可以應用屬性的程序元素類型。以下是一個示例,展示了如何定義一個名為MyCustomAttribute
的自定義屬性,并使用AttributeUsage
指定它只能應用于類:
using System;
using System.Reflection;
// 自定義屬性類
[AttributeUsage(AttributeTargets.Class)] // 指定屬性只能應用于類
public class MyCustomAttribute : Attribute
{
public string MyProperty { get; set; }
public MyCustomAttribute(string myProperty)
{
MyProperty = myProperty;
}
}
// 使用自定義屬性的類
[MyCustom("Hello, World!")] // 將自定義屬性應用于類
public class MyClass
{
public void MyMethod()
{
Console.WriteLine("My custom attribute is applied to this class.");
}
}
class Program
{
static void Main(string[] args)
{
// 獲取MyClass的屬性信息
var attributes = typeof(MyClass).GetCustomAttributes(typeof(MyCustomAttribute), true);
// 輸出屬性信息
foreach (var attribute in attributes)
{
var myCustomAttribute = (MyCustomAttribute)attribute;
Console.WriteLine($"MyCustomAttribute.MyProperty: {myCustomAttribute.MyProperty}");
}
}
}
在這個示例中,我們定義了一個名為MyCustomAttribute
的自定義屬性,并使用AttributeUsage
將其應用于MyClass
類。在Main
方法中,我們使用GetCustomAttributes
方法獲取MyClass
上的MyCustomAttribute
屬性,并將其值輸出到控制臺。