Interceptar el método asíncrono que devuelve la Tarea genérica <> a través de DynamicProxy
Mis preguntas están relacionadas con esta publicación.Intercepte la llamada a un método asíncrono utilizando DynamicProxy
Quiero implementar el interceptor que funciona con métodos asíncronos que devuelveTask
oTask<T>
resultado.
Yo uso el siguiente código para volverContinueWith
resultado (para que el método de llamada espere mientras el interceptor termina de funcionar)
var task = invocation.ReturnValue as Task;
invocation.ReturnValue = task.ContinueWith(c =>
{ code that should execute after method finish });
El código anterior funciona bien paraTask
resultado, pero en caso deTask<T>
resultadoContinueWith
cambiará el tipo de retorno deTask<T>
aTask
. Necesito llamar al método sobrecargado ContinueWith que devuelveTask<T>
, pero para esto necesito lanzarinvocation.ReturnValue
aTask<T>
No encontré la manera de lanzarlo dinámicamente de ninguna manera. ¿Alguien sabe cómo hacerlo?
También intenté llamar a este método a través de la reflexión, pero el parámetro es la función labmda que no se puede pasar directamente.