В сообщении Enum ToString описан способ использования пользовательского атрибута DescriptionAttribute
следующим образом:
Enum HowNice {
[Description("Really Nice")]
ReallyNice,
[Description("Kinda Nice")]
SortOfNice,
[Description("Not Nice At All")]
NotNice
}
И затем вы вызываете функцию GetDescription
, используя синтаксис вроде:
GetDescription<HowNice>(NotNice); // Returns "Not Nice At All"
Но это действительно не помогает мне , когда я хочу просто заполнить ComboBox значениями enum, поскольку я не могу заставить ComboBox вызывать GetDescription
.
Я хочу иметь следующие требования:
- Чтение
(HowNice)myComboBox.selectedItem
вернет выбранное значение в качестве значения перечисления. - Пользователь должен увидеть удобные для пользователя строки отображения, а не только имя значений перечисления. Поэтому вместо того, чтобы видеть "
NotNice
", пользователь увидит "Not Nice At All
". - Надеемся, что решение потребует минимальных изменений кода для существующих перечислений.
Очевидно, я мог бы реализовать новый класс для каждого перечисления, который я создаю, и переопределить его ToString()
, но это много работы для каждого перечисления, и я бы предпочел избежать этого.
Любые идеи?
Черт, я даже закрою объятие в качестве награды: -)