Как получить Array.IndexOf <string>(строка [], строка) MethodInfo? - PullRequest
1 голос
/ 03 февраля 2012

Как получить MethodInfo для Array.IndexOf<string>(string[], string)?

Я пытаюсь использовать этот код, но не работает.

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

Ответы [ 2 ]

7 голосов
/ 03 февраля 2012

Использование 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 );
4 голосов
/ 03 февраля 2012

Нашел этот пост в блоге, который, кажется, достигает того, что вы просите;

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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...