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.

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top