首页 >后端开发 >C++ >如何从 C# 中的描述属性中检索枚举值?

如何从 C# 中的描述属性中检索枚举值?

Linda Hamilton
Linda Hamilton原创
2025-01-21 21:41:13508浏览

How to Retrieve Enumeration Values from Description Attributes in C#?

根据描述属性检索枚举值

在某些编程场景中,需要根据枚举关联的描述属性来检索枚举值。这在处理具有描述性标签的枚举时尤其有用。

可以使用 Enum.GetValueFromDescription() 方法来实现。但是,此方法并不存在于 .NET 框架中。我们可以实现一个自定义扩展方法来弥补这个不足。以下代码片段演示了这样的实现:

<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>

通过调用 GetValueFromDescription 方法,您可以检索与指定的描述属性对应的枚举值。此方法迭代枚举的字段,检查 DescriptionAttribute 属性,并在匹配时返回相应的值。如果找不到匹配的描述,则根据实现情况抛出异常或返回枚举类型的默认值。

以上是如何从 C# 中的描述属性中检索枚举值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn