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

Generate a typed enum in C# using CodeDom

我正在尝试了解如何使用 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属性可用于设置每个枚举成员的实际值。

您可以使用 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"));