使用CodeDom生成一个包含Value和Name的枚举

时间:2010-10-05 01:22:29

标签: c# reflection enums codedom

我有一小段代码:

    private Dictionary<string, IList<KeyValuePair<int, string>>> EnumsCollection = new Dictionary<string, IList<KeyValuePair<int, string>>>();

    // ...... Dictionary is filled, fine

    // ... outer loop
    foreach (var enumNameAndValue in EnumsCollection[enumName])
    {
         var codeProperty = new CodeMemberField
         {
              Name = enumNameAndValue.Value
         };

         codeClass.Members.Add(codeProperty);
    }
    // ...

好,我得到一个枚举:     public enum eShape     {         回合,         广场,     }

但是还可以在名称中设置值吗? 如:

public enum eShape
{
    Round = 4,
    Square = 5,
}

1 个答案:

答案 0 :(得分:3)

您使用InitExpression

foreach (var enumNameAndValue in EnumsCollection[enumName])
{
     var codeProperty = new CodeMemberField
     {
          Name = enumNameAndValue.Value,
          InitExpression = new CodePrimitiveExpression(enumNameAndValue.Key); // Uses key for value
     };