Sie zu dieser 100-mal müssen gegeben und haben Ausnahme für Ihre Steuerfluss zu verwenden (was, wenn vermieden werden soll möglich). Sie könnten einige Wrapper wie folgt verwenden:
public class ExWrapper
{
private readonly Action _action;
private readonly ExWrapper _prev;
private ExWrapper(Action action, ExWrapper prev = null)
{
_action = action;
_prev = prev;
}
public static ExWrapper First(Action test)
{
return new ExWrapper(test);
}
public ExWrapper Then(Action test)
{
return new ExWrapper(test, this);
}
public void Execute()
{
if (_prev != null)
try
{
_prev.Execute();
}
catch (Exception)
{
_action();
}
else
_action();
}
}
So können Sie Ketten Aktionen, wo die nächste Aktion nur dann, wenn der erste wirft ausgeführt wird. Sie können es wie im folgenden Beispiel verwenden:
ExWrapper.First(() => { Console.WriteLine("First"); throw new Exception(); })
.Then(() => { Console.WriteLine("Second"); throw new Exception(); })
.Then(() => { Console.WriteLine("Third"); throw new Exception(); })
.Then(() => { Console.WriteLine("Fourth"); })
.Execute();
Diese alle Aktionen oder Lambda-Ausdrücke in der angegebenen Reihenfolge ausgeführt wird, sondern nur die folgende Aktion ausführen, wenn der erste wirft. Das obige Beispiel druckt:
First
Second
Third
Fourth
Wenn Sie die throws
im Beispiel entfernen:
ExWrapper.First(() => { Console.WriteLine("First"); })
.Then(() => { Console.WriteLine("Second"); })
.Then(() => { Console.WriteLine("Third"); })
.Then(() => { Console.WriteLine("Fourth"); })
.Execute();
Nur die erste Aktion ausgeführt wird, was in der folgenden Ausgabe:
First
Sie nehmen sollten ein Blick auf [wie man fragt] (https://stackoverflow.com/help/how-to-ask) und lesen Sie die Dokumentation auf versuchen, um zu sehen, wie es funktioniert – Fabulous
zugegebenermaßen ist die Frage, die ich gestellt habe, sehr schlecht ist. Ich fand eine Minute später selbst eine Lösung. Es ist jetzt nicht löschbar. – MimSaad