DescriptionAttribute gives the enum or other qualified types some description which is human readable.
such as
public enum Testing
{
[Description("David Gouge")]
Dave = 1,
[Description("Peter Gouge")]
Pete = 2,
[Description("Marie Gouge")]
Ree = 3
}
But, given this, how do you find the an Enum value based on the the description value atached to the field?
you can use this
var descriptionToMatch = new DescriptionAttribute("David Gouge");
Testing testing = Enum.GetValues(typeof (Testing))
.Cast<Testing>()
.Where(v => descriptionToMatch.Equals(v.GetDescription()))
.FirstOrDefault();
In order to use that you will need to define some extension method, I hvae wrote up two. (the Linq one is the one that I wrote for mysef.)
static class StaticEnumHelper
{
public static DescriptionAttribute GetDescription(this Enum enu)
{
DescriptionAttribute attr = enu.GetType()
.GetField(enu.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute), false)
.SingleOrDefault() as DescriptionAttribute;
return attr ?? null;
}
public static string GetDescription2(this Enum value)
{
if (value == null)
{
throw new ArgumentNullException("value");
}
string description = value.ToString();
FieldInfo fieldInfo = value.GetType().GetField(description);
DescriptionAttribute[] attributes =
(DescriptionAttribute[])
fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0)
{
description = attributes[0].Description;
}
return description;
}
}
Referneces:
Finding an enum value by its Description Attribute [Duplicate]
本文介绍了一种方法,用于根据枚举值上的DescriptionAttribute获取对应的枚举成员。通过定义扩展方法,可以方便地实现这一功能,使得在.NET应用程序中能够更加灵活地使用枚举类型。
340

被折叠的 条评论
为什么被折叠?



