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

时间:2016-01-06 23:20:04

标签: c# enums 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属性可用于设置每个枚举成员的实际值。

1 个答案:

答案 0 :(得分:1)

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

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"));