在C#中,Attribute(特性)是一種用于向程序元素(如類、方法、屬性等)添加元數據信息的機制。Attribute以方括號的形式定義在程序元素的上方,如下所示:
[AttributeUsage(AttributeTargets.Class)]
public class CustomAttribute : Attribute
{
// 屬性
public string Name { get; set; }
// 構造函數
public CustomAttribute(string name)
{
Name = name;
}
}
// 使用自定義特性
[CustomAttribute("TestClass")]
public class MyClass
{
// 屬性
[CustomAttribute("TestProperty")]
public string MyProperty { get; set; }
// 方法
[CustomAttribute("TestMethod")]
public void MyMethod()
{
// 方法體
}
}
在上面的示例中,定義了一個名為CustomAttribute的自定義特性,并將其應用于類MyClass和其中的屬性和方法。可以在自定義特性類中定義屬性和構造函數,以便在應用特性時傳遞參數。
要獲取程序元素上的特性信息,可以使用反射機制。例如,可以通過以下代碼獲取MyClass類上的CustomAttribute特性信息:
CustomAttribute attribute = (CustomAttribute)Attribute.GetCustomAttribute(typeof(MyClass), typeof(CustomAttribute));
if (attribute != null)
{
Console.WriteLine(attribute.Name);
}
通過正確使用Attribute,可以為程序元素添加額外的元數據信息,以便在運行時動態地獲取和處理這些信息。