利用自定义属性,定义枚举值的详细文本
新方案:http://hilite.cnblogs.com/archive/2006/03/28/360793.html
对于枚举类型:
很多情况下,要显示更完整或其他内容的枚举值文本,
解决方案之一,可以在某个地方维护一张对应表,来维护所有枚举值文本,这可能会导致枚举类型和文本脱节。
另一个方案是通过利用自定义属性“EnumDescription”,来定义枚举类型,这样枚举值和文本在一起,维护起来将很方便。
现在在调用代码:
这里是“EnumDescription”的具体实现和测试代码。https://files.cnblogs.com/hilite/EnumDisplayText.zip
这里是主要代码:
对于枚举类型:
enum WorkState
{
/// <summary>
/// 计划
/// </summary>
Planing,
/// <summary>
/// 就绪
/// </summary>
Ready,
/// <summary>
/// 进行中
/// </summary>
Processing,
/// <summary>
/// 完成
/// </summary>
Finished
}
你的客户想怎么在界面上看到这些枚举类型的值呢?{
/// <summary>
/// 计划
/// </summary>
Planing,
/// <summary>
/// 就绪
/// </summary>
Ready,
/// <summary>
/// 进行中
/// </summary>
Processing,
/// <summary>
/// 完成
/// </summary>
Finished
}
MessageBox.Show(WorkState.Ready.ToString());
结果你一定想到了,是“Ready”,而不是“就绪”。很多情况下,要显示更完整或其他内容的枚举值文本,
解决方案之一,可以在某个地方维护一张对应表,来维护所有枚举值文本,这可能会导致枚举类型和文本脱节。
另一个方案是通过利用自定义属性“EnumDescription”,来定义枚举类型,这样枚举值和文本在一起,维护起来将很方便。
[EnumDescription(WorkState.Planing, "计划制定中")]
[EnumDescription(WorkState.Ready, "一切就绪")]
[EnumDescription(WorkState.Processing, "工作进行中")]
[EnumDescription(WorkState.Finished, "完成工作")]
enum WorkState
{
Planing,
Ready,
Processing,
Finished
}
[EnumDescription(WorkState.Ready, "一切就绪")]
[EnumDescription(WorkState.Processing, "工作进行中")]
[EnumDescription(WorkState.Finished, "完成工作")]
enum WorkState
{
Planing,
Ready,
Processing,
Finished
}
现在在调用代码:
MessageBox.Show(
EnumDescription.GetText(typeof(WorkState), (int)WorkState.Planing));
你将看到想要的文字“计划制定中”。EnumDescription.GetText(typeof(WorkState), (int)WorkState.Planing));
这里是“EnumDescription”的具体实现和测试代码。https://files.cnblogs.com/hilite/EnumDisplayText.zip
这里是主要代码:
主要代码