代码之家  ›  专栏  ›  技术社区  ›  Colin Burnett

带有System.Reflection.Emit的嵌套枚举

  •  0
  • Colin Burnett  · 技术社区  · 15 年前

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

    public class Foo
    {
        public enum Views
        {
        }
    }
    

    但是System.Reflection.Emit.TypeBuilder类没有仅定义NestedUnum的DefinedNestedType。modulebuilder.definenum存在,让我创建一个枚举,但我找不到嵌套的方法。我可以在不伪造枚举的情况下创建枚举吗(例如,使用EnumBuilder)?


    我把我的解决方案移到下面的答案。

    2 回复  |  直到 15 年前
        1
  •  3
  •   jlew    15 年前

    请参阅下面的示例 this article 这正是你想要的。(将definenestedtype与正确的参数一起使用)

        2
  •  1
  •   Colin Burnett    15 年前

    把我的答案移到这里。


    我唯一能想到的是将嵌套类型定义为扩展System.Enum的密封类,并用常量值定义public static literal字段。这基本上就是C编译器基于我通过分解它所学到的知识所做的。如果我这样做并引用程序集,IntelliSense会将其识别为枚举,并像枚举一样执行函数。


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