Ich möchte eine Reihe von Befehlsausführungen ausgeben, aber nur, wenn der vorherige Befehl erfolgreich war. Im Moment hebe ich ein Ereignis innerhalb des Befehlsobjekts an, das anzeigt, ob der Befehl erfolgreich war oder fehlgeschlagen ist. Ich verwende das, um die Ausführung zu kontrollieren, aber es fühlt sich unelegant an.
Beispiel:
%Vor%Das funktioniert, aber es fühlt sich plump und unintelligent an. Ich könnte einen booleschen Wert von Execute () zurückgeben, der Erfolg oder Misserfolg anzeigt, aber das ist auf dem gleichen Pfad. Ich könnte Ausnahmen bei einem Fehler auslösen, was zu saubererem Code führen könnte, aber möglicherweise übertrieben ist.
Irgendwelche Vorschläge?
Ich habe es geschafft, indem ich einen Befehl "Kette" eingerichtet habe. Ich habe ein Command-Objekt erstellt, das andere Befehle enthält, und feuere dann jedes Mal, wenn Do aufgerufen wird. In Ihrem Fall könnte der Befehl den Delegaten aufrufen und nur den nächsten Befehl in der Sequenz auslösen, wenn er erfolgreich war.
Ein Weg, es zu tun, nehme ich an.
Das Zurückgeben eines booleschen Objekts oder eines Objekts, das einen Status darstellt, ist nicht so schlecht. Es fühlt sich vielleicht etwas plump an, aber es ist einfach und klar.
Eine Implementierung, die ich verwende, ist etwa so:
Zuerst füge ich die Command Objekte zu einer Liste hinzu.
%Vor%Dann wird die Liste der Befehlsobjekte wie folgt ausgeführt:
%Vor%Tags und Links c# design-patterns command-pattern