Enumerazioni nidificate con System.Reflection.Emit
-
03-07-2019 - |
Domanda
Voglio creare una classe con un enum nidificato.
public class Foo
{
public enum Views
{
}
}
Tuttavia la classe System.Reflection.Emit.TypeBuilder non ha solo DefineNestedEnum solo DefinedNestedType. ModuleBuilder.DefineEnum esiste che mi permette di creare un enum ma non trovo il modo di farlo annidare. Posso creare un enum senza falsificarlo (ad es. Usando EnumBuilder)?
Ho spostato la mia soluzione su una risposta di seguito.
Soluzione 2
Spostando la mia risposta ho inserito la domanda qui.
L'unica cosa a cui riesco a pensare è definire un tipo nidificato come classe sigillata che estende System.Enum e definisce i campi pubblici | statici | letterali con valori costanti. Questo è essenzialmente ciò che il compilatore C # sta facendo in base a ciò che ho imparato smontandolo. Se lo faccio e faccio riferimento all'assemblea Intellisense lo riconosce come enum e funziona proprio come un enum.
Questo è esattamente il metodo che MSDN mostra a Jeremy collegato.
Altri suggerimenti
Vedi l'esempio alla fine di questo articolo , che fa esattamente quello che vuoi. (Si utilizza DefineNestedType con gli argomenti giusti)