在帖子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
将返回所选值作为枚举值。 - 用户应该看到友好的显示字符串,而不仅仅是枚举值的名称。 因此,用户将看到“
Not Nice At All
”,而不是“NotNice
”。 - 希望解决方案对现有枚举代码的更改最小。
显然,我可以为每个枚举实现一个新类,并覆盖其ToString()
方法,但对于每个枚举来说这都是很多工作,我宁愿避免这种情况。
有任何想法吗?
嘿,我甚至会给你一个拥抱作为赏金 :-)