2009-04-30 74 views
0

我想创建一个嵌套枚举类。System.Reflection.Emit的嵌套枚举

public class Foo 
{ 
    public enum Views 
    { 
    } 
} 

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


我将我的解决方案移至下面的答案。

回答

2

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


我能想到的唯一的事情就是定义一个嵌套类型的扩展System.Enum密封类和界定公共|静态|恒值字面领域。这基本上是C#编译器基于我通过反汇编学到的内容所做的。如果我这样做并引用程序集,Intellisense将它识别为一个枚举并且像枚举一样运行。


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

3

请参阅this article末尾处的示例,该示例正是您想要的。 (你用正确的参数使用DefineNestedType)

+0

与我所说的有什么不同?从具有常数值的定义字段的System.Enum继承的嵌套类型。 但是,MSDN示例似乎表明没有对创建嵌套枚举的继承支持。 – 2009-04-30 21:57:44