在C#中,自定義屬性是通過創建一個派生自System.Attribute類的新類來實現的。以下是一個簡單的自定義屬性的例子:
using System;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
public class CustomAttribute : Attribute
{
public string Name { get; set; }
public int Value { get; set; }
public CustomAttribute(string name, int value)
{
Name = name;
Value = value;
}
}
[Custom("Attribute1", 1)]
[Custom("Attribute2", 2)]
public class MyClass
{
[Custom("MethodAttribute", 3)]
public void MyMethod()
{
// Some code here
}
}
在上面的例子中,我們創建了一個名為CustomAttribute的自定義屬性,并為其添加了Name和Value兩個屬性。然后我們在MyClass類和MyMethod方法上分別應用了CustomAttribute屬性。
要訪問自定義屬性的值,可以使用反射來檢索應用于類或方法的所有自定義屬性,并獲取其值,如下所示:
class Program
{
static void Main(string[] args)
{
Type type = typeof(MyClass);
var classAttributes = type.GetCustomAttributes(typeof(CustomAttribute), false);
foreach (CustomAttribute attribute in classAttributes)
{
Console.WriteLine($"Name: {attribute.Name}, Value: {attribute.Value}");
}
var methodInfo = type.GetMethod("MyMethod");
var methodAttributes = methodInfo.GetCustomAttributes(typeof(CustomAttribute), false);
foreach (CustomAttribute attribute in methodAttributes)
{
Console.WriteLine($"Name: {attribute.Name}, Value: {attribute.Value}");
}
}
}
以上代碼將輸出以下結果:
Name: Attribute1, Value: 1
Name: Attribute2, Value: 2
Name: MethodAttribute, Value: 3
這樣就實現了在C#中創建和使用自定義屬性的方法。