C# 获取泛型委托返回类型

C# 获取泛型委托返回类型,c#,reflection,delegates,C#,Reflection,Delegates,我得到了一个c#方法,它接收一个泛型委托作为参数,调用后检查结果的类型: public async Task<TResult> InvokeAction<TResult>(Delegate action, object[] actionArgs = null) { ... var result = action.DynamicInvoke(actionArgs); if (result is Task<TResult> task) return

我得到了一个c#方法,它接收一个泛型
委托
作为参数,调用后检查结果的类型:

public async Task<TResult> InvokeAction<TResult>(Delegate action, object[] actionArgs = null)
{
...
    var result = action.DynamicInvoke(actionArgs);
    if (result is Task<TResult> task) return await task;
}
public async Task InvokeAction(委托操作,对象[]actionArgs=null)
{
...
var结果=action.DynamicInvoke(actionArgs);
如果(结果为任务任务)返回等待任务;
}
如果委托参数的返回类型确实是
TResult
,是否有一种方法可以在高级中进行检查,而无需首先调用它?在不更改参数的情况下,您可以使用的
返回类型

  Func<int> action = () => 1;
  Delegate a = action;
  Console.WriteLine(a.Method.ReturnType); // prints System.Int32
Func action=()=>1;
代表a=行动;
Console.WriteLine(a.Method.ReturnType);//打印System.Int32

然后检查类型是否确实是我的方法声明的TResult,正确的比较代码是否应该是a.method.ReturnType==typeof(TResult)?@YonatanNir-Yes。但更常见的方法是使用
Type.IsAssignableFrom