Meine Fragen kehrt auf diesen Beitrag im Zusammenhang Intercept the call to an async method using DynamicProxyIntercept Asynchron-Methode, die allgemeine Aufgabe <> über Dynamic
ich Abfangjäger implementieren möchten, die mit Asynchron-Methoden arbeitet, die Task
oder Task<T>
Ergebnis zurückgibt.
verwende ich nächsten Code für die Rückkehr ContinueWith
Ergebnis (in der Reihenfolge, dass Anrufer Methode warten Sie, während Abfangjäger Arbeit beendet)
var task = invocation.ReturnValue as Task;
invocation.ReturnValue = task.ContinueWith(c =>
{ code that should execute after method finish });
obigen Code funktioniert für Task
Ergebnis in Ordnung, aber im Fall von Task<T>
Ergebnis ContinueWith
wird Rückgabetyp ändern von Task<T>
bis Task
. Ich brauche überladene Methode ContinueWith aufzurufen, die Task<T>
zurückgibt, aber dafür muss ich invocation.ReturnValue
zu Task<T>
ich so, wie es in irgendeiner Weise dynamisch werfen nicht das finden werfen. Weiß jemand, wie man es macht?
Ich habe auch versucht, diese Methode über Reflexion zu nennen, aber Parameter ist labmda-Funktion, die nicht direkt übergeben werden kann.
Check out https://msdn.microsoft.com/en-us/magazine/dn574805.aspx - Artikel ist für Unity Interzeptoren, aber "wickeln Sie die Aufgabe" Code hängt nicht von Ihrem DI-Container. –