使用 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"));
我正在尝试了解如何使用 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"));