В посте 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 значениями перечисления, поскольку я не могу заставить ComboBox вызвать GetDescription
.
То, что я хочу, имеет следующие требования:
- Чтение
(HowNice)myComboBox.selectedItem
вернет выбранное значение в качестве значения перечисления.
- Пользователь должен видеть удобные для пользователя строки отображения, а не только имя значений перечисления. Поэтому вместо "
NotNice
" пользователь увидит "Not Nice At All
".
- Надеемся, что решение потребует минимальных изменений кода в существующих перечислениях.
Очевидно, я мог бы реализовать новый класс для каждого создаваемого перечисления и переопределить его ToString()
, но для каждого перечисления это большая работа, и я бы предпочел этого избежать.
Есть идеи?
Черт, я даже добавлю объятия в качестве награды: -)