Библиотеки
 1) Создать интерфейс IExecutor и содержит метод ExecuteAsync(CancelationToken t).
2) Создать реализацию TypedExecutor<TGeneric>, который в конструкторе принимает параметры вызова и реализует IExecutor .
3) Через рефлексию и ExpressionTree собрать нужный generic TypedExecutor и вызов его конструктора. Скомпилировать вызов конструктора в делегат.
4) Создать нужный TypedExecutor через делегат и привести его к типу IExecutor, вызвать метод ExecuteAsync.
  

 

Теги: