This may seem a little upside down faced, but what I want to be able to do is get an enum value from an enum by its Description attribute.
So, if I have an enum declared as follows:
enum Testing
{
[Description("David Gouge")]
Dave = 1,
[Description("Peter Gouge")]
Pete = 2,
[Description("Marie Gouge")]
Ree = 3
}
I'd like to be able to get 2 back by supplying the string "Peter Gouge".
As a starting point, I can iterate through the enum fields and grab the field with the correct attribute:
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)
{
}
}
}
But then I'm stuck as to what to do in that inner if. Also not sure if this is the way to go in the first place.