通过其描述属性查找枚举值
这看起来有些颠倒,但是我想能够做的是通过其Description属性从枚举中获取枚举值。
所以,如果我有一个枚举声明如下:
enum Testing{
[Description("David Gouge")]
Dave = 1,
[Description("Peter Gouge")]
Pete = 2,
[Description("Marie Gouge")]
Ree = 3
}
我想通过提供字符串“ Peter Gouge”来获得2。
首先,我可以遍历枚举字段并使用正确的属性获取该字段:
string descriptionToMatch = "Peter Gouge";FieldInfo[] fields = typeof(Testing).GetFields();
foreach (FieldInfo field in fields)
{
if (field.GetCustomAttributes(typeof(DescriptionAttribute), false).Count() > 0)
{
if (((DescriptionAttribute)field.GetCustomAttributes(typeof(DescriptionAttribute), false)[0]).Description == descriptionToMatch)
{
}
}
}
但是后来我被困住了,如果在那里面做什么。同样也不确定这是否是一开始的方法。
回答:
使用此处描述的扩展方法:
Testing t = Enum.GetValues(typeof(Testing)) .Cast<Testing>()
.FirstOrDefault(v => v.GetDescription() == descriptionToMatch);
如果找不到匹配的值,它将返回(Testing)0
(您可能想None
在枚举中为该值定义一个成员)
以上是 通过其描述属性查找枚举值 的全部内容, 来源链接: utcz.com/qa/400581.html