2010-02-09 1 views
2

Maintenant que j'ai une meilleure compréhension des classes et de leur importance en C#, j'ai une question sur la façon de gérer une certaine situation.Méthodes d'appel

Je dois effectuer 5-6 tests en utilisant 3 périphériques externes différents qui nécessitent tous une dizaine de commandes à paramétrer au début de chaque test.

Il y a donc environ 10 commandes pour chaque appareil pour 6 tests.

j'allais à l'origine, mais ceux-ci dans un tableau pour chaque appareil, mais maintenant il est plus logique d'avoir une méthode dans la classe pour chaque deveice pour chaque étape - device1_test1() device2_test2(), etc.

Cette c'est bien mais j'ai besoin de donner à l'utilisateur la possibilité de revenir à une étape précédente en cas d'erreur. Donc, si l'erreur survient à TEST4, l'utilisateur peut retourner à TEST2, mais je dois évidemment relancer les commandes de sorte que je suis sûr d'où nous en sommes puisque les commandes dépendent l'une de l'autre au fur et à mesure des tests. Donc, je voudrais émettre des commandes test1 pour tous les périphériques, puis des commandes test2 pour tous les périphériques et ainsi de suite.

Est-ce ainsi que je devrais le faire?

Si oui, quand j'appelle device1_test1 et 2 etc, puis-je le faire en utilisant le contenu d'une variable dans le nom de la méthode pour la partie test1 test2 test3 en incrémentant un entier?

Je ne suis pas sûr de la syntaxe même, mais quelque chose comme ça -

device1_test+counter+() where counter will contain 1, then 2, then 3 etc ? 

Hope this sens.

Sinon, avez-vous des suggestions pour mieux faire face à ce scénario?

Merci, George.

Répondre

4

Delegates vous aidera ici.

Action[] testCases = new Action[] { device1_test1, devide1_test2 }; 

Et puis juste itérer sur la collection avec une boucle for habituelle:

for(int i = 0; i < actions.Length; ++i) { 
    try { 
     actions[i].Invoke(); 
    } 

    catch(TestFailedException) { 
     if(i > 1) 
      i -= 1; 
    } 
} 
+0

Salut Anton, Merci pour cela, son exactement ce que je cherchais! Cheers, George. – George

Questions connexes