使用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属性可用于设置每个枚举成员的实际值。
您可以使用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"));