Enums imbriqués avec System.Reflection.Emit
-
03-07-2019 - |
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.
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)