如何获取Array.IndexOf <string>(string [],string)MethodInfo?</string>

时间:2012-02-03 16:40:11

标签: c# reflection

如何获取MethodInfo的{​​{1}}?

我尝试使用此代码,但无效。

Array.IndexOf<string>(string[], string)

2 个答案:

答案 0 :(得分:7)

使用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 );

答案 1 :(得分:4)

发现这篇博文似乎可以满足您的要求;

http://blog.functionalfun.net/2009/10/getting-methodinfo-of-generic-method.html

样本用法如下;

var m = SymbolExtensions.GetMethodInfo(() => Array.IndexOf<string>(null, null));

这样,您获得了MethodInfo IndexOf<String>(String[], String)而不是IndexOf<T>(T[], T)