如何为Array.IndexOf<string>(string[], string)
获取MethodInfo
?
我尝试使用此代码,但不起作用。
typeof(Array).GetMethod("IndexOf",
BindingFlags.Public | BindingFlags.Static, null,
new Type[] { typeof(string[]), typeof(string) }, null);
使用BindingFlags.Public | BindingFlags.Static
编辑:
下面的注释是正确的,问题是IndexOf
方法是通用的——只有一个Array.IndexOf<T>(T[], T)
。为了得到这个,这就是对我有效的:
var indexOfGeneric = typeof(Array).GetMethods(BindingFlags.Public | BindingFlags.Static)
.First(m => m.Name == "IndexOf"
&& m.GetParameters().Length == 2
&& m.IsGenericMethod );
发现这篇博客文章似乎达到了你的要求;
http://blog.functionalfun.net/2009/10/getting-methodinfo-of-generic-method.html
示例用法如下;
var m = SymbolExtensions.GetMethodInfo(() => Array.IndexOf<string>(null, null));
通过这种方式,您可以获得IndexOf<String>(String[], String)
的MethodInfo
,而不是IndexOf<T>(T[], T)
。