Pregunta

Quiero crear una clase con una enumeración anidada.

public class Foo
{
    public enum Views
    {
    }
}

Sin embargo, la clase System.Reflection.Emit.TypeBuilder no tiene DefineNestedEnum solo DefinedNestedType. ModuleBuilder.DefineEnum existe que me permite crear una enumeración pero no encuentro la forma de anidarla. ¿Puedo crear una enumeración sin falsificarla (es decir, usando EnumBuilder)?


Moví mi solución a una respuesta a continuación.

¿Fue útil?

Solución 2

Moviendo mi respuesta, puse la pregunta aquí.


Lo único en lo que puedo pensar es en definir un tipo anidado como una clase sellada que amplíe System.Enum y definir campos literales públicos | estáticos | con valores constantes. Esto es esencialmente lo que hace el compilador de C # basado en lo que aprendí al desensamblarlo. Si hago esto y hago referencia al conjunto, Intellisense lo reconoce como una enumeración y funciona igual que una enumeración.


Este es exactamente el método que MSDN muestra que Jeremy enlazó.

Otros consejos

Vea el ejemplo al final de este artículo , que hace exactamente lo que quieres. (Utiliza DefineNestedType con los argumentos correctos)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top