Это может показаться немного перевернутым, но то, что я хочу сделать, это получить значение enum из перечисления с помощью атрибута Description.
Итак, если у меня есть перечисление, объявленное следующим образом:
enum Testing
{
[Description("David Gouge")]
Dave = 1,
[Description("Peter Gouge")]
Pete = 2,
[Description("Marie Gouge")]
Ree = 3
}
Я бы хотел получить 2 обратно, предоставив строку "Peter Gouge".
В качестве отправной точки я могу выполнить итерацию по полям перечисления и захватить поле с правильным атрибутом:
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)
{
}
}
}
Но тогда я зациклился на том, что делать в этом внутреннем if. Также не уверен, что это путь в первую очередь.