通过描述获取枚举值

本文关键字:枚举 获取 描述 | 更新日期: 2023-09-27 18:36:33

可能的重复项:
从"说明"属性获取枚举

我有一个使用描述属性的枚举。我希望能够根据传入的字符串设置对象 ->属性值。如果字符串与枚举值描述之一匹配,则应选择该值。我可以在不使用冗长的 for 循环的情况下做到这一点吗?

public enum Rule
{
     ....
     [Description("New Seed")]
     Rule2 = 2,
     ....
}

我希望的是类似

var object = new oject{ rule = Rule.Where(r=> r.description == rulestring)}

通过描述获取枚举值

        Rule f;
        var type = typeof(Rule);
        foreach (var field in type.GetFields())
        {
            var attribute = Attribute.GetCustomAttribute(field,
                typeof(DescriptionAttribute)) as DescriptionAttribute;
            if (attribute != null)
            {
                if (attribute.Description == "description"){
                    f = (Rule)field.GetValue(null);
                break;}
            }
            else
            {
                if (field.Name == "description"){
                    f = (Rule)field.GetValue(null);
                break;}
            }
        } 

参考:从"描述"属性获取枚举