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

发布于 2024-09-26 06:18:49 字数 717 浏览 3 评论 0原文

我有一小段代码:

    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,
}

I have this little piece of code :

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

Good, I get an enum :
public enum eShape
{
Round,
Square,
}

but would it be possible to also set a Value moreover the Name?
As in :

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自我难过 2024-10-03 06:18:49

您可以使用 InitExpression

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

You'd use InitExpression:

foreach (var enumNameAndValue in EnumsCollection[enumName])
{
     var codeProperty = new CodeMemberField
     {
          Name = enumNameAndValue.Value,
          InitExpression = new CodePrimitiveExpression(enumNameAndValue.Key); // Uses key for value
     };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文