使用EnumMember属性遍历枚举

时间:2015-04-01 04:45:05

标签: c# asp.net enums

鉴于以下enum

public enum JobTypes
{
    [EnumMember (Value = "IN PROGRESS")]
    IN_PROGRESS,
    SUBMITTED,
    [EnumMember (Value = "IN REVIEW")]
    IN_REVIEW
}

我正在按如下方式迭代这些:

foreach (var jobType in Enum.GetValues (typeof(JobTypes))) {
    Console.WriteLine("{0,3:D} 0x{0:X} {1}", Enum.Parse(typeof(JobTypes), jobType.ToString()), jobType);
}

输出:

// The example displays the following output: 
// 0     0x00000000     IN_PROGRESS 
// 1     0x00000001     SUBMITTED
// 2     0x00000002     IN_REVIEW

预期:

// The example displays the following output: 
// 0     0x00000000     IN PROGRESS // no _ character 
// 1     0x00000001     SUBMITTED
// 2     0x00000002     IN REVIEW // no _ character

1 个答案:

答案 0 :(得分:2)

EnumMemberNameAttribute仅影响序列化:

  

EnumMemberAttribute可以在枚举序列化时精确控制枚举的名称。

对于在值上调用ToString()的结果没有任何影响,这实际上是您在此处所做的。