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]