首頁 >後端開發 >C++ >如何在 C# 中在運行時讀取類別屬性?

如何在 C# 中在運行時讀取類別屬性?

Linda Hamilton
Linda Hamilton原創
2025-01-12 08:55:42360瀏覽

How Can I Read Class Attributes at Runtime in C#?

在 C# 中動態存取類別屬性

在運行時存取類別屬性是動態檢索元資料或配置資訊的強大技術。 這可以使用 C# 的反射功能來實現。

擷取特定屬性(DomainNameAttribute):

通用方法 GetDomainName<T> 簡化了從任何類別檢索 DomainNameAttribute 的過程:

<code class="language-csharp">public string GetDomainName<T>()
{
    var dnAttribute = typeof(T).GetCustomAttributes(typeof(DomainNameAttribute), true)
                               .FirstOrDefault() as DomainNameAttribute;
    return dnAttribute?.Name;
}</code>

使用範例:

<code class="language-csharp">// Returns "MyTable" (assuming myclass has the attribute)
string domainName = GetDomainName<myclass>();</code>

屬性存取的更通用方法:

為了更廣泛的適用性,更通用的擴展方法允許檢索任何屬性類型及其特定屬性:

<code class="language-csharp">public static class AttributeExtensions
{
    public static TValue GetAttributeValue<TAttribute, TValue>(
        this Type type, 
        Func<TAttribute, TValue> valueSelector) 
        where TAttribute : Attribute
    {
        var attribute = type.GetCustomAttributes(typeof(TAttribute), true)
                            .FirstOrDefault() as TAttribute;
        return attribute != null ? valueSelector(attribute) : default(TValue);
    }
}</code>

使用範例:

<code class="language-csharp">string name = typeof(MyClass).GetAttributeValue((DomainNameAttribute dna) => dna.Name);</code>

此方法採用屬性類型和 lambda 表達式來從屬性實例中選擇所需的屬性值。 這為存取各種屬性屬性提供了靈活性。

以上是如何在 C# 中在運行時讀取類別屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn