Как у меня есть перечисление связанный combobox с пользовательским форматированием строки для значений перечисления?
в должности 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возвращает выбранное значение в качестве значения enum. - пользователь должен видеть удобные строки отображения, а не только имя значений перечисления. Так что вместо того, чтобы видеть"
NotNice", пользователь увидит "Not Nice At All". - надеюсь, решение потребует минимальных изменений в код существующих перечислений.
очевидно, я мог бы реализовать новый класс для каждого enum, которое я создаю, и переопределить его ToString(), но это много работы для каждого enum, и я бы предпочел избежать этого.
какие идеи?
Черт, я даже брошу в объятия в качестве награды : -)
Comments