获取通用委托 return 类型
Get generic delegate return type
我得到了一个 c# 方法,它接收通用 Delegate
作为参数,并在调用后检查结果的类型:
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;
}
如果委托参数的 return 类型确实是 TResult
,有没有一种方法可以在不需要先调用它的情况下进行高级检查?这个不用改参数Func<TResult>
您可以使用 Delegate.Method
的 ReturnType
:
Func<int> action = () => 1;
Delegate a = action;
Console.WriteLine(a.Method.ReturnType); // prints System.Int32
我得到了一个 c# 方法,它接收通用 Delegate
作为参数,并在调用后检查结果的类型:
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;
}
如果委托参数的 return 类型确实是 TResult
,有没有一种方法可以在不需要先调用它的情况下进行高级检查?这个不用改参数Func<TResult>
您可以使用 Delegate.Method
的 ReturnType
:
Func<int> action = () => 1;
Delegate a = action;
Console.WriteLine(a.Method.ReturnType); // prints System.Int32