使用System.Reflection.Emit的嵌套枚举

时间:2009-04-30 21:11:30

标签: c# reflection .net-3.5 reflection.emit

我想创建一个带有嵌套枚举的类。

public class Foo
{
    public enum Views
    {
    }
}

但是System.Reflection.Emit.TypeBuilder类没有DefineNestedEnum只有DefinedNestedType。 ModuleBuilder.DefineEnum存在,让我创建一个枚举,但我发现没有办法让它嵌套。我可以创建枚举而不伪造它(即使用EnumBuilder)吗?


我将我的解决方案移到了下面的答案中。

2 个答案:

答案 0 :(得分:3)

请参阅this article末尾的示例,它完全符合您的要求。 (您使用带有正确参数的DefineNestedType)

答案 1 :(得分:1)

移动我的回答我把问题放在这里。


我唯一能想到的是将嵌套类型定义为密封类,扩展System.Enum并使用常量值定义public | static | literal字段。这基本上是C#编译器基于我通过反汇编学到的东西所做的事情。如果我这样做并引用程序集,Intellisense会将其识别为枚举,并且就像枚举一样。


这正是MSDN显示Jeremy链接的方法。