在C#中,可以使用[Attribute]
關鍵字來定義一個attribute,并通過在類、方法、屬性或參數前添加[AttributeName]
來使用這個attribute。例如:
// 定義一個自定義的attribute
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]
public class CustomAttribute : Attribute
{
public CustomAttribute()
{
// 可以在構造方法中設置屬性的默認值
}
public string Description { get; set; }
}
// 在類上使用自定義attribute
[CustomAttribute(Description = "This is a custom attribute")]
public class MyClass
{
// 在方法上使用自定義attribute
[CustomAttribute(Description = "This is a custom method attribute")]
public void MyMethod()
{
// 方法體
}
// 在屬性上使用自定義attribute
[CustomAttribute(Description = "This is a custom property attribute")]
public string MyProperty { get; set; }
}
在使用自定義attribute時,可以通過反射來獲取attribute的信息,例如獲取attribute的值或者判斷某個類、方法或屬性是否使用了特定的attribute。
// 獲取類上的attribute
CustomAttribute classAttribute = (CustomAttribute)Attribute.GetCustomAttribute(typeof(MyClass), typeof(CustomAttribute));
if (classAttribute != null)
{
Console.WriteLine(classAttribute.Description);
}
// 獲取方法上的attribute
MethodInfo methodInfo = typeof(MyClass).GetMethod("MyMethod");
CustomAttribute methodAttribute = (CustomAttribute)Attribute.GetCustomAttribute(methodInfo, typeof(CustomAttribute));
if (methodAttribute != null)
{
Console.WriteLine(methodAttribute.Description);
}
// 獲取屬性上的attribute
PropertyInfo propertyInfo = typeof(MyClass).GetProperty("MyProperty");
CustomAttribute propertyAttribute = (CustomAttribute)Attribute.GetCustomAttribute(propertyInfo, typeof(CustomAttribute));
if (propertyAttribute != null)
{
Console.WriteLine(propertyAttribute.Description);
}