首頁 >後端開發 >C++ >如何從其描述屬性中取得枚舉值?

如何從其描述屬性中取得枚舉值?

Patricia Arquette
Patricia Arquette原創
2025-01-21 21:28:10525瀏覽

How Can I Get an Enum Value from its Description Attribute?

根據描述屬性取得枚舉值

前面我們介紹過一個擴充方法,用來取得枚舉關聯的Description屬性。現在,讓我們探索一個補充函數,允許我們根據其描述獲取枚舉。

為此,我們引入以下擴充方法:

<code class="language-csharp">public static class EnumEx
{
    public static T GetValueFromDescription<T>(string description) where T : Enum
    {
        foreach (var field in typeof(T).GetFields())
        {
            if (Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) is DescriptionAttribute attribute)
            {
                if (attribute.Description == description)
                    return (T)field.GetValue(null);
            }
            else
            {
                if (field.Name == description)
                    return (T)field.GetValue(null);
            }
        }

        throw new ArgumentException("未找到。", nameof(description));
        // 或返回 default(T);
    }
}</code>

使用方法:

此方法可以如下呼叫:

<code class="language-csharp">var panda = EnumEx.GetValueFromDescription<animal>("大熊猫");</code>

透過提供「大熊貓」描述,擴充方法將檢索對應的大熊貓枚舉值。

以上是如何從其描述屬性中取得枚舉值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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