Frage

Ich möchte eine Reihe von Befehlsausführungen erteilen, aber nur, wenn der vorherige Befehl erfolgreich war. Im Moment bin ich Anhebung ein Ereignis innerhalb des Befehlsobjekt anzeigt, ob der Befehl erfolgreich war oder nicht. Ich verwende diese zu Steuer Ausführung, aber es fühlt sich unelegant.

Beispiel:

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

Dies funktioniert, aber es fühlt sich ungeschickt und wenig intuitiv. Ich könnte einen boolean zurück auf Execute (), die Erfolg oder Misserfolg passieren, aber das ist auf dem gleichen Weg. Ich konnte Ausnahmen bei einem Fehler werfen, die in sauberem Code könnten zur Folge haben würden, aber möglicherweise übertrieben.

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Ich habe um diese durch einen Befehl „Kette“ einrichten. Ich habe ein Command-Objekt, die anderen Befehle hält, dann wird jeder von ihnen wiederum ausgelöst, wenn Do genannt wird. In Ihrem Fall könnten Sie den Befehl, um die Delegierten und nur Feuer aus dem nächsten Befehl in der Folge haben anrufen, wenn es erfolgreich ist.

Eine Möglichkeit, es zu tun, nehme ich an.

Andere Tipps

ein boolean oder ein Objekt zurückkehrend einige Status repräsentiert ist nicht so schlimm. Es könnte das Gefühl ungeschickt, aber es ist einfach und klar.

sein

Eine Implementierung ich benutze, ist so etwas wie folgt aus:

Zuerst habe ich fügen Sie den Befehl Objekte in einer Liste an.

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

Dann wird die Liste der Befehlsobjekte wie folgt ausgeführt wird:

foreach (ICommand command in commands)
{
  bool success = command.Execute();
  if (!success) break;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top