2010-12-15 3 views
0

J'ai une méthode GenerateOutput qui imprime une liste de chaînes. La méthode prend plusieurs énumérations en tant que paramètres et génère un résultat basé sur les indicateurs qui ont été entrés dans la méthode. Je sais que les énumérations sont conçues pour la compilation, mais est-il possible de modifier la sortie au moment de l'exécution, en fonction des options sélectionnées par l'utilisateur dans le programme? Essentiellement, j'ai différentes cases à cocher qui représentent les énumérations possibles. Lorsque l'utilisateur sélectionne une option, cet indicateur doit être ajouté en tant que paramètre à la méthode GenerateOutput. Cela peut-il être fait? MerciEntrées d'entrée à l'exécution

+0

Veuillez mettre un exemple/code de vous r Fonction GenerateOutput – Francisco

+0

C'est juste un code de test pour que cela fonctionne. La méthode est juste 'void GenerateOutput (TestEnumerations tEnums)' et affiche la valeur 'tEnums' sur la console. Je voudrais entrer plusieurs tEnums à l'exécution. – Brap

+0

Pourquoi ne pas entrer plusieurs tEnums séparés par ex. virgule ou un autre omble et ensuite l'analyser dans votre méthode? comme: t1, t2, puis utilisez string.split (','), puis Enum.Parse pour chacune des valeurs? – Ostap

Répondre

3

Je pense que ce que vous voulez faire (je ne suis pas sûr que je comprends complètement votre question) est de construire une valeur Enum à l'exécution pour passer dans la fonction.

En supposant que votre ENUM est spécifié avec l'attribut [flags]:

[flags] 
public enum TestEnumerations 
{ 
    Value1 = 1, 
    Value2 = 2, 
    Value3 = 4, 
    //etc 
} 

alors vous pouvez le faire:

// In checkbox handlers, e.g. 
tEnums |= TestEnumerations.Value1; 

// Where you call the method 
GenerateOutput(tEnums); 

Sinon, comme suggéré par Francisco dans les commentaires, une liste de liste (ou un HashSet si vous voulez que chaque valeur enum apparaisse une seule fois):

// In checkbox handlers, e.g. 
list.Add(TestEnumerations.Value1); 

// Where you call the method 
GenerateOutput(list); 
+0

Merci. Je ne savais pas que vous pouviez faire '| ='. Ça devrait le faire. – Brap

+1

Cela ne fonctionnera que si les valeurs sont des puissances de 2 et que l'attribut [flags] est défini. –

Questions connexes