Ich habe eine Menge von Funktionen, die wie folgt aussehen:Passing-Funktionen mit einer unterschiedlichen Anzahl und Arten von Parametern
public void DoParticularThing(RecurringTaskRunResult result) {
try {
// Do a bunch of stuff
}
catch (Exception e) {
result.Succeeded = false;
result.Results += e.ToString();
db.SaveChanges();
}
}
Also beschloss ich, das von DRY-Code im Namen zu extrahieren:
public void RunThing(Action<RecurringTaskRunResult> action, RecurringTaskRunResult result) {
try {
action(result);
}
catch (Exception e) {
result.Succeeded = false;
result.Results += e.ToString();
db.SaveChanges();
}
}
So kann ich DoParticularThing
wie folgt aufrufen können:
RunThing(DoParticularThing, result);
Aber einige meiner Funktionen auch anot akzeptieren ihr Parameter:
Wie kann ich RunThing
ändern, um optional einen anderen Parameter zu akzeptieren?
eine Überlastung hinzufügen. DRYMTYHT. Oder TROCKEN, aber geh nicht über Bord. –
@EdPlunkett Das mache ich jetzt, aber es scheint ein Schritt in die andere Richtung zu sein: p – SB2055
Nun, Sie könnten eine Methode schreiben, die jede beliebige Aktion in einem try/catch aufruft. –