对于枚举类型:
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”的具体实现和测试代码。 http://files.cnblogs.com/hilite/EnumDisplayText.zip
这里是主要代码:


1


2

3

4

5

6

7

8

9



10

11

12

13

14

15

16

17

18

19



20

21



22

23

24

25

26



27

28

29

30

31

32

33

34

35

36

37

38

39



40

41

42

43

44

45

46

47

48
