最后,我已经能够通过反射,类型的成员Func<T, TResult>,现在,我如何调用它?
当我检索它时,我通过Type.GetMembers方法执行它,并返回一个没有Invoke方法的MemberInfo类型; 我怎么能调用它?
人们,再次感谢!=)
为了获得方法的委托,您需要调用MakeGenericMethod传递泛型类型参数 - 这将返回一个可调用的委托:
var constructedMethod
= yourMethodInfo.MakeGenericMethod(typeof(int), typeof(string));
constructedMethod.Invoke(yourInstance, yourArguments);
Run Code Online (Sandbox Code Playgroud)
如果您很好奇,您需要这样做的原因是因为MethodInfo您当前持有的实例是open,这意味着没有泛型类型参数绑定到它(并且自然无法调用此方法,这就是没有Invoke可用方法的原因) 。通过调用,MakeGenericMethod您可以使用泛型类型参数显式构造该方法。
以供参考 - MakeGenericMethod:
[返回] 一个 MethodInfo 对象,该对象表示通过用 typeArguments 的元素替换当前泛型方法定义的类型参数而形成的构造方法。
| 归档时间: |
|
| 查看次数: |
2483 次 |
| 最近记录: |