Interceptar método assíncrono que retorna Tarefa genérica <> via DynamicProxy
Minhas perguntas estão relacionadas a este postIntercepte a chamada para um método assíncrono usando DynamicProxy
Eu quero implementar interceptor que funciona com métodos assíncronos que retornamTask
ouTask<T>
resultado.
Eu uso o próximo código para retornarContinueWith
resultado (para que o método chamador aguarde enquanto o interceptador termina o trabalho)
var task = invocation.ReturnValue as Task;
invocation.ReturnValue = task.ContinueWith(c =>
{ code that should execute after method finish });
O código acima funciona bem paraTask
resultado, mas em caso deTask<T>
resultadoContinueWith
mudará o tipo de retorno deTask<T>
paraTask
. Preciso chamar o método sobrecarregado ContinueWith que retornaTask<T>
, mas para isso eu preciso lançarinvocation.ReturnValue
paraTask<T>
Não encontrei maneira de transmitir dinamicamente de nenhuma maneira. Alguém sabe como fazer isso?
Também tentei chamar esse método via reflexão, mas o parâmetro é a função labmda que não pode ser passada diretamente.