首頁 >後端開發 >C++ >如何使用枚舉值的描述屬性反向查找它?

如何使用枚舉值的描述屬性反向查找它?

Susan Sarandon
Susan Sarandon原創
2025-01-21 21:31:10656瀏覽

How Can I Reverse Lookup an Enum Value Using Its Description Attribute?

透過描述屬性反向找出枚舉值

除了從枚舉中取得 Description 屬性外,還可以執行反向操作,根據其 Description 屬性檢索枚舉值。

為此,建立一個名為 GetValueFromDescription 的泛型擴充方法,如下所示:

<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<动物>("大熊猫");</code>

以上是如何使用枚舉值的描述屬性反向查找它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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