Pergunta

Eu quero criar uma classe com um enum aninhado.

public class Foo
{
    public enum Views
    {
    }
}

classe No entanto System.Reflection.Emit.TypeBuilder não tem DefineNestedEnum única DefinedNestedType. ModuleBuilder.DefineEnum existe que vamos me criar um enum, mas eu não encontrar nenhuma maneira de torná-lo aninhados. Posso criar uma enumeração sem fingir (ou seja, usando EnumBuilder)?


Mudei a minha solução para uma resposta abaixo.

Foi útil?

Solução 2

Movendo a minha resposta eu coloquei a questão para aqui.


A única coisa que posso pensar é definir um tipo aninhado como classe selada, que se estende System.Enum e definir públicos | estática | campos literais com valores constantes. Este é essencialmente o que o compilador C # é fazer com base no que eu aprendi por desmontá-lo. Se eu fizer isso e fazer referência a montagem Intellisense reconhece-lo como um enum e funciona apenas como um enum.


Este é exatamente o método MSDN mostra que Jeremy vinculados.

Outras dicas

Veja o exemplo no final do este artigo , que faz exatamente o que você quer. (Você usa DefineNestedType com os argumentos certos)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top