Ich versuche, eine Klasse zu erstellen, mit der ich Methoden mit einem angegebenen Zeitlimit aufrufen kann. Ich habe die tatsächliche Timeout-Implementierung funktioniert, aber habe Probleme beim Einkapseln dieser in eine Klasse erfolgreich.Erstellen einer wiederverwendbaren Methode Timeout-Klasse in C#
Ich habe mich zu dieser Zeit entschieden, mich auf die Arbeit mit nur den 5 Action Delegaten zu beschränken, um eine Zeitüberschreitung für Methoden zu setzen, die 0 - 4 Argumente annehmen. Für die Zwecke dieser Frage werde ich die eine Argumentvariante von Aktion verwenden.
Meine Ideal Aufrufsyntax wäre so etwas wie dies:
Action<int> a = new TimeoutAction(i => i + 1)
{
Timeout = Timespan.FromSeconds(10)
}
oder dies:
Action<int> a = (x => x + 1).Timeout(Timespan.FromSeconds(10))
Ich bin fast sicher, dass die erste Version ist nicht möglich, da es keine Möglichkeit gibt, von einem erben delegieren. Die zweite Möglichkeit ist möglich, indem eine Erweiterungsmethode für den Typ Delegate
verwendet wird.
Ein letzter Fallback wäre, statische Methoden zu erstellen, die den entsprechenden Delegattyp übernehmen und einen Delegaten mit der gleichen Signatur, aber mit den Timeouts zurückgeben.
Irgendwelche Vorschläge oder Ideen?