Перехватить асинхронный метод, который возвращает универсальную задачу <> через DynamicProxy

Мои вопросы связаны с этим постомПерехватить вызов асинхронного метода с помощью DynamicProxy

Я хочу реализовать перехватчик, который работает с асинхронными методами, которые возвращаютTask или жеTask<T> результат.

Я использую следующий код для возвратаContinueWith результат (для того, чтобы вызывающий метод ждал, пока перехватчик завершит работу)

var task = invocation.ReturnValue as Task;
invocation.ReturnValue = task.ContinueWith(c => 
      { code that should execute after method finish });

Выше код отлично работает дляTask результат, но в случаеTask<T> результатContinueWith изменит тип возврата сTask<T> вTask, Мне нужно вызвать перегруженный метод ContinueWith, который возвращаетTask<T>, но для этого мне нужно отлитьinvocation.ReturnValue вTask<T>

Я не нашел способа динамически разыграть его. Кто-нибудь знает, как это сделать?

Я также пытался вызвать этот метод с помощью отражения, но параметр - это функция labmda, которую нельзя передать напрямую.

Ответы на вопрос(1)

Ваш ответ на вопрос