Ich möchte eine Klasse mit einer verschachtelten Enumeration erstellen.Verschachtelte Aufzählungen mit System.Reflection.Emit
public class Foo
{
public enum Views
{
}
}
jedoch System.Reflection.Emit.TypeBuilder Klasse hat keine DefineNestedEnum nur DefinedNestedType. ModuleBuilder.DefeEnum existiert, die mich eine Enum erstellen lassen, aber ich finde keine Möglichkeit, es verschachtelt zu machen. Kann ich ein Enum erstellen, ohne es zu fälschen (d. H. Mit EnumBuilder)?
Ich bewegte meine Lösung zu einer Antwort unten.
Wie unterscheidet sich das von dem, was ich gesagt habe? Ein verschachtelter Typ, der von System.Enum mit Definitionsfeldern mit konstanten Werten erbt. Dieses MSDN-Beispiel scheint jedoch anzuzeigen, dass keine Unterstützung für das Erstellen verschachtelter Enums vorhanden ist. –
Der Punkt ist: Das ist eine verschachtelte Enumeration - ein verschachtelter Typ, der von System.Enum erbt, der Felder mit konstanten Werten definiert. Sehen Sie sich in Reflector an, was das MSDN-Beispiel in seiner emittierten Assembly erzeugt, und vergleichen Sie es mit einer verschachtelten Enumeration, die durch Kompilieren einer C# -Klasse mit einer verschachtelten Enumeration erzeugt wird. Sie werden feststellen, dass sie identisch sind. – jlew
Wie ist der MSDN-Artikel, den Sie verlinkt haben, anders als der, den ich ursprünglich in der Frage gepostet hatte (und seitdem zu einer Antwort verschoben wurde)? Meine Frage geht nicht darum, wie man ein enum vortäuscht (ich habe das klar abgedeckt). EnumBuilder existiert, um alle Details zu verbergen, was ein Enum wirklich ist, aber ich finde keine Möglichkeit, einen EnumBuilder zu bekommen und verschachtelt zu haben. –