使用CodeDom在C#中生成一个类型化枚举

本文关键字:一个 枚举 类型化 CodeDom 使用 | 更新日期: 2023-09-27 18:29:11

我正试图弄清楚如何使用CodeDom(在C#中)生成类型化枚举。

具体来说,某种形式:

// Create an enum that supports long integer values.
enum Days : long {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

通过将CodeTypeDeclaration的IsEnum属性设置为true,我可以很容易地生成常规枚举,但我需要将一些成员值初始化为不适合int类型的数字(这似乎是C#中枚举的默认值)。

任何帮助都将不胜感激!

编辑:对于任何寻找如何创建基本枚举的信息的人:

CodeTypeDeclaration enumType = new CodeTypeDeclaration("MyEnum");
enumType.Members.Add(new CodeMemberField("MyEnum", "First"));
enumType.Members.Add(new CodeMemberField("MyEnum", "Second"));
enumType.Members.Add(new CodeMemberField("MyEnum", "Third"));

InitExpression属性可用于设置每个枚举成员的实际值。

使用CodeDom在C#中生成一个类型化枚举

您可以使用BaseTypes属性为枚举添加基类型,如下所示:

CodeTypeDeclaration enumType = new CodeTypeDeclaration("MyEnum");
enumType.IsEnum = true;
enumType.BaseTypes.Add(typeof(long));
enumType.Members.Add(new CodeMemberField("MyEnum", "First"));
enumType.Members.Add(new CodeMemberField("MyEnum", "Second"));
enumType.Members.Add(new CodeMemberField("MyEnum", "Third"));