我的问题与这篇文章有关拦截使用DynamicProxy调用异步方法
我想实现拦截器,它使用返回Task或Task<T>结果的异步方法.
我使用下一个代码返回ContinueWith结果(以便在拦截器完成工作时调用方法等待)
var task = invocation.ReturnValue as Task;
invocation.ReturnValue = task.ContinueWith(c =>
{ code that should execute after method finish });
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常的Task结果,但在的情况下,Task<T>结果ContinueWith将改变返回类型Task<T>来Task.我需要调用返回的重载方法ContinueWith Task<T>,但为此我需要转换invocation.ReturnValue为Task<T>
我没有找到以任何方式动态投射它的方法.有谁知道如何制作它?
我也尝试通过反射调用此方法,但参数是labmda函数,不能直接传递.