【问题标题】:How to Get Array.IndexOf<string>(string[], string) MethodInfo?如何获取 Array.IndexOf<string>(string[], string) MethodInfo?
【发布时间】:2012-02-03 16:40:10
【问题描述】:

如何为Array.IndexOf&lt;string&gt;(string[], string) 获取MethodInfo

我尝试使用此代码,但不起作用。

typeof(Array).GetMethod("IndexOf", 
 BindingFlags.Public | BindingFlags.Static, null, 
  new Type[] { typeof(string[]), typeof(string) }, null);

【问题讨论】:

标签: c# reflection


【解决方案1】:

使用BindingFlags.Public | BindingFlags.Static

编辑:

下面的评论是正确的,问题是IndexOf方法是通用的——只有一个Array.IndexOf&lt;T&gt;(T[], T)。为了得到那个,这对我有用:

var indexOfGeneric = typeof(Array).GetMethods(BindingFlags.Public | BindingFlags.Static)
                                  .First(m => m.Name == "IndexOf" 
                                           && m.GetParameters().Length == 2
                                           && m.IsGenericMethod );

【讨论】:

  • 这将返回 Array.IndexOf(Array, Object) MethodInfo。
【解决方案2】:

发现这篇博文似乎达到了您的要求;

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

示例用法如下;

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

这样,您将获得IndexOf&lt;String&gt;(String[], String)MethodInfo,而不是IndexOf&lt;T&gt;(T[], T)

【讨论】:

  • 感谢您的回答,我喜欢 lamda 和强类型方法选择器。
猜你喜欢
  • 1970-01-01
  • 2020-04-04
  • 2014-03-30
  • 2015-10-16
  • 2013-10-05
  • 2014-01-02
  • 2013-05-27
  • 1970-01-01
  • 2016-08-23
相关资源
最近更新 更多