Motif de commande: exécution de plusieurs commandes en séquence

voix
8

Je veux lancer une série d'exécutions de commandes, mais seulement lorsque la commande avant réussissais. En ce moment, je soulève un événement dans l'objet de commande indiquant si la commande a réussi ou échoué. J'utilise cette option pour contrôler l'exécution, mais il se sent inélégante.

Exemple:

command1.CommandSucceeded += delegate { command2.Execute(); };
command1.Execute();

Cela fonctionne, mais il se sent maladroit et peu intuitive. Je pourrais passer un booléen retour sur Exécuter () indiquant le succès ou l'échec, mais c'est le même chemin. Je pourrais lever des exceptions en cas d'échec, qui pourrait donner lieu à un code plus propre, mais peut-être exagéré.

Aucune suggestion?

Créé 26/08/2009 à 23:09
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
7

Je suis autour en mettant en place une commande « chaîne ». J'ai créé un objet de commande qui détient d'autres commandes, puis tirer chacun d'eux à son tour lorsque Do est appelé. Dans votre cas, vous pourriez avoir la commande appeler le délégué et ne déclencher la commande suivante dans la séquence si elle a réussi.

Une façon de le faire, je suppose.

Créé 26/08/2009 à 23:16
source utilisateur

voix
1

De retour un booléen ou un objet représentant un statut est pas si mal. On pourrait se sentir maladroit, mais il est simple et claire.

Une mise en œuvre que j'utilise est quelque chose comme ceci:

Tout d'abord ajouter les objets de commande dans une liste.

List<ICommand> commands = new List<ICommand>;
commands.Add(command1);
commands.Add(command2);

Ensuite, la liste des objets de commande est exécuté comme ceci:

foreach (ICommand command in commands)
{
  bool success = command.Execute();
  if (!success) break;
}
Créé 26/08/2009 à 23:24
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more