Question

Je veux créer une classe avec une énumération imbriquée.

public class Foo
{
    public enum Views
    {
    }
}

Cependant, la classe System.Reflection.Emit.TypeBuilder ne contient pas DefineNestedEnum uniquement DefinedNestedType. ModuleBuilder.DefineEnum existe qui me permet de créer une énumération mais je ne trouve aucun moyen de la rendre imbriquée. Puis-je créer une énumération sans la simuler (c'est-à-dire en utilisant EnumBuilder)?

J'ai déplacé ma solution vers une réponse ci-dessous.

Était-ce utile?

La solution 2

En déplaçant ma réponse, j'ai posé la question ici.

La seule chose à laquelle je puisse penser est de définir un type imbriqué en tant que classe scellée qui étend System.Enum et de définir des champs publics | static | literal avec des valeurs constantes. C’est essentiellement ce que fait le compilateur C # à partir de ce que j’ai appris en le désassemblant. Si je fais cela et que je fais référence à l’ensemble, Intellisense le reconnaît comme une énumération et fonctionne comme une énumération.

C’est exactement la méthode MSDN qui montre que Jeremy est lié.

Autres conseils

Voir l'exemple à la fin de cet article , qui fait exactement ce que vous voulez. (Vous utilisez DefineNestedType avec les bons arguments)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top