enums aninhadas com System.Reflection.Emit
-
03-07-2019 - |
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.
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)