我正在试图弄清楚如何使用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属性可用于设置每个枚举成员的实际值。
答案 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"));