使用System.Reflection.Emit的嵌套枚举
-
03-07-2019 - |
题
我想创建一个带有嵌套枚举的类。
public class Foo
{
public enum Views
{
}
}
但是System.Reflection.Emit.TypeBuilder类没有DefineNestedEnum只有DefinedNestedType。 ModuleBuilder.DefineEnum存在,让我创建一个枚举,但我发现没有办法让它嵌套。我可以创建枚举而不伪造它(即使用EnumBuilder)吗?
我将我的解决方案移到了下面的答案中。
解决方案 2
移动我的回答我把问题放在这里。
我唯一能想到的是将嵌套类型定义为密封类,扩展System.Enum并使用常量值定义public | static | literal字段。这基本上是C#编译器基于我通过反汇编学到的东西所做的事情。如果我这样做并引用程序集,Intellisense会将其识别为枚举,并且就像枚举一样。
这正是MSDN显示Jeremy链接的方法。
其他提示
请参阅结尾处的示例这篇文章,它完全符合您的要求。 (您使用带有正确参数的DefineNestedType)
不隶属于 StackOverflow