Combiner plusieurs enums dans la liste enum master
Est-il possible de combiner plusieurs énumérations ensemble? Ci-dessous est le code d'exemple de ce que je voudrais voir:
enum PrimaryColors
{
Red,
Yellow,
Blue
}
enum SecondaryColors
{
Orange,
Green,
Purple
}
//Combine them into a new enum somehow to result in:
enum AllColors
{
Red,
Orange,
Yellow,
Green,
Blue,
Purple
}
Il n'a pas d'importance quel ordre ils sont, ou ce que leur sauvegarde des chiffres, je veux juste être capable de les combiner.
Pour le contexte, c'est ainsi que plusieurs classes pour un programme que je suis en train de travailler sur aurait enums associé avec ce qu'ils font. Mon programme principal serait de lire tous les enums disponible à partir de chacune des classes de soutien et faites une liste des énumérations, des commandes disponibles (les énumérations sont pour).
Edit:
La raison de ces énumérations, c'est parce que mon programme principal est la lecture à une liste de commandes à exécuter à certains moments, et si je veux lire le fichier, voir si la commande est associé avec l'un de mes énumérations, et si elle l'est, le mettre dans une liste de commandes à exécuter.
source d'informationauteur Xantham
Vous devez vous connecter pour publier un commentaire.
Pas sûr de comprendre précisément. Mais vous pouvez faire un
List<>
de toutes les valeurs comme ceci:Au lieu de
List<Enum>
vous pouvez également utiliserHashSet<Enum>
. En tout cas, parce que vous affectez unPrimaryColor
ouSecondaryColor
à un classe type (à savoirSystem.Enum
), vous obtenez boxemais c'est juste un détail technique (probablement).Cela semble que vous ne voulez pas trois différents
enum
types, vous voulez un type (ce que vous appelez “maîtreenum
”), majoré d'une certaine façon de décider qui de la sous-enums une certaine valeur appartient. Pour ce faire, vous pouvez utiliser un ensemble de valeurs à partir de votre maître enum, ou unswitch
.Par exemple:
Aussi, vous devez utiliser un nom singulier pour
enum
types (sauf si c'est un drapeauenum
).Garder les choses simples et il suffit d'utiliser l'implicite
int
les conversions, ou utiliser leSystem.Enum.Parse()
fonction: