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

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

Linda Hamilton
发布: 2025-01-21 21:41:13
原创
564 人浏览过

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

根据描述属性检索枚举值

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

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

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);
    }
}
登录后复制

使用方法:

var panda = EnumEx.GetValueFromDescription<animal>("大熊猫");
登录后复制

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

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

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板