Вы должны написать свой собственный обратный метод. Метод parse (), очевидно, не знает о ваших атрибутах описания.
Что-то вроде этого должно работать:
public static T GetEnumValueFromDescription<T>(string description)
{
MemberInfo[] fis = typeof(T).GetFields();
foreach (var fi in fis)
{
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0 && attributes[0].Description == description)
return (T)Enum.Parse(typeof(T), fi.Name);
}
throw new Exception("Not found");
}
Вам нужно найти лучшее, что можно сделать чем выбросить исключение, если значение перечисления не было найдено. :) [/ Д2]