代码之家  ›  专栏  ›  技术社区  ›  Bruno

使用CodeDom生成具有值和名称的枚举

  •  2
  • Bruno  · 技术社区  · 15 年前

        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);
        }
        // ...
    

    很好,我得到一个枚举: 公共枚举eShape { 方块字, }

    public enum eShape
    {
        Round = 4,
        Square = 5,
    }
    
    1 回复  |  直到 15 年前
        1
  •  3
  •   Reed Copsey    15 年前

    你会用 InitExpression :

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