Никакой идентификатор в C # не может начинаться с цифры (по лексическим причинам / для разбора). Попробуйте добавить атрибут [Description] к вашим значениям перечисления:
public enum myEnum
{
[Description("1A")]
OneA = 1,
[Description("2A")]
TwoA = 2,
[Description("3A")]
ThreeA = 3,
};
Тогда вы можете получить описание из значения перечисления, например:
((DescriptionAttribute)Attribute.GetCustomAttribute(
typeof(myEnum).GetFields(BindingFlags.Public | BindingFlags.Static)
.Single(x => (myEnum)x.GetValue(null) == enumValue),
typeof(DescriptionAttribute))).Description
Основываясь на комментариях XSA ниже, я хотел бы расширить, как можно сделать это более читабельным. Проще всего, вы можете просто создать статический (расширение) метод:
public static string GetDescription(this Enum value)
{
return ((DescriptionAttribute)Attribute.GetCustomAttribute(
value.GetType().GetFields(BindingFlags.Public | BindingFlags.Static)
.Single(x => x.GetValue(null).Equals(value)),
typeof(DescriptionAttribute)))?.Description ?? value.ToString();
}
Вам решать, хотите ли вы сделать его методом расширения, и в приведенной выше реализации я сделал его запасным по отношению к обычному имени перечисления, если не было предоставлено [DescriptionAttribute]
.
Теперь вы можете получить описание для перечисления через:
myEnum.OneA.GetDescription()