C# 从 Func<> 委托中获取类型参数
C# Get Type Parameters from a Delegate which is a Func<>
例如,假设我已将 Func<> 转换为委托...
Func<object, int> func = GetFunc();
Delegate d = func;
现在,如果我提前知道 Delegate 的类型,我可以直接转换回 Func<>
Func<object, int> newFunc = (Func<object, int>)d;
但是如果我直到运行时才知道函数类型怎么办?我如何从委托中取回我的 Func<>?
Delegate d = GetFunc(); // may return a Func<T>, Func<T,T2>, Func<T,T2,T3>, etc...
var func = GetFuncFromDelegate(d);
或者至少,获取类型参数以便我可以重建类型:
Delegate d = GetFunc(); // may return a Func<T>, Func<T,T2>, Func<T,T2,T3>, etc...
Type[] funcParams = GetTypeParamsFromDelegate(d);
or at least, get the Type parameters so I can rebuild the type:
这个很简单:
Type[] funcParams = (d.GetType()).GenericTypeArguments;
例如,假设我已将 Func<> 转换为委托...
Func<object, int> func = GetFunc();
Delegate d = func;
现在,如果我提前知道 Delegate 的类型,我可以直接转换回 Func<>
Func<object, int> newFunc = (Func<object, int>)d;
但是如果我直到运行时才知道函数类型怎么办?我如何从委托中取回我的 Func<>?
Delegate d = GetFunc(); // may return a Func<T>, Func<T,T2>, Func<T,T2,T3>, etc...
var func = GetFuncFromDelegate(d);
或者至少,获取类型参数以便我可以重建类型:
Delegate d = GetFunc(); // may return a Func<T>, Func<T,T2>, Func<T,T2,T3>, etc...
Type[] funcParams = GetTypeParamsFromDelegate(d);
or at least, get the Type parameters so I can rebuild the type:
这个很简单:
Type[] funcParams = (d.GetType()).GenericTypeArguments;