2009-04-30 72 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