要通過 PropertyInfo 獲取自定義屬性,首先需要使用 GetCustomAttributes 方法來檢索屬性上的所有自定義屬性。以下是一個示例代碼:
using System;
using System.Reflection;
class MyClass
{
[MyCustom("Custom Attribute Value")]
public string MyProperty { get; set; }
}
class Program
{
static void Main()
{
PropertyInfo propertyInfo = typeof(MyClass).GetProperty("MyProperty");
object[] customAttributes = propertyInfo.GetCustomAttributes(typeof(MyCustom), false);
if (customAttributes.Length > 0)
{
MyCustom myCustomAttribute = (MyCustom)customAttributes[0];
Console.WriteLine("Custom Attribute Value: " + myCustomAttribute.Value);
}
}
}
[AttributeUsage(AttributeTargets.Property)]
public class MyCustom : Attribute
{
public string Value { get; }
public MyCustom(string value)
{
Value = value;
}
}
在上面的示例中,我們定義了一個名為 MyCustom 的自定義屬性,并將其應用于 MyClass 類的 MyProperty 屬性。然后,通過使用 GetCustomAttributes 方法,我們可以獲取 MyProperty 屬性上的所有自定義屬性,并檢查是否存在指定類型的自定義屬性。最后,我們可以從獲取到的自定義屬性中提取所需的值進行處理。