Ich arbeite innerhalb einer Methode, die eine Reihe von Validierungsprüfungen durchführt und sollte eine dieser Prüfungen fehlschlagen, ruft sie eine Action<string>
auf, um einen gemeinsamen Ablehnungscode auszuführen. Die Einrichtung ist so etwas wie dies:Rückkehr von der übergeordneten Methode innerhalb der Aktion <string>
public void ValidationMethod() {
Action<string> rejectionRoutine = (rejectionDescription) => {
// do something with the reject description
// other common code
};
if (condition != requiredValue) {
rejectionRoutine("Condition check failed");
// I currently have to put `return` here following every failed check
}
// many more checks following this
}
In diesem System einmal eine Überprüfung Validierung fehlgeschlagen ich keine Notwendigkeit, den Rest zu validieren, ich möchte nur die gemeinsame Ablehnung Code innerhalb der Aktion auszuführen, und das Verfahren zu beenden . Derzeit, um dies zu tun, ich nur return
in der nächsten Zeile nach einem Anruf an . Ich frage mich, ob es eine Möglichkeit gibt, die Möglichkeit zu integrieren, die Ausführung der übergeordneten Methode innerhalb der Action
zurückzugeben oder zu beenden?
Ich weiß, das ist ein bisschen pingelig, aber ich denke, es ist besser für die Erweiterbarkeit weiter unten auf der Straße, wenn jemand andere zusätzliche Validierungsprüfungen hinzufügen muss (sie müssen sich nicht um die Rückgabe kümmern place) sowie das gemeinsame Verhalten der Endausführung innerhalb des Codes einzufügen, der in diesen Fällen üblich ist.
Ahhh Servy, große Köpfe denken gleich.Ich habe Code geschrieben, der fast identisch war, bevor ich ein paar Stellen fand, wo es keinen Sinn ergab. Es gibt einige Überprüfungen, die Ausnahmen auslösen, wenn sie ausgewertet werden, wenn eine vorherige Überprüfung abgeschlossen sein sollte. Ie. check1 ist value! = null, check2 könnte etwas mit Wert machen, vorausgesetzt, dass es nicht null sein kann, wenn wir so weit gekommen sind –
@JesseCarter Dann, wie ich am Ende gesagt habe, müssen Sie eine 'List verwenden , Zeichenfolge >> '. Es ist nur ein bisschen mehr Code. –
Servy
Vielleicht bin ich verwirrt über die Art, wie der Bool in der Func ausgewertet wird? Wird die tatsächliche Bewertung des Bool-Wertes aufgeschoben, bis der Func aufgerufen wird? Ich nahm an, dass es ausgewertet würde, sobald der Func erstellt wurde –