Существует 2 перегрузки (или сигнатуры методов) метода "Where" в классе Enumerable:
namespace System.Linq {
public static class Enumerable {
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate);
}
So
var where = typeof(Enumerable).GetMethod("Where")
выдает исключение, указывающее на неоднозначное совпадение, потому что,Конечно, существует более одного метода с именем «Где», поэтому я попытался провести различие по параметрам:
var types = new[] {
typeof(IEnumerable<>),
typeof(Func<,>)};
var where = typeof(Enumerable).GetMethod("Where", types);
Это, однако, не соответствует ни одной из сигнатур метода, и яне знаю, почему.
Обобщенный вопрос: как вызвать перегруженный универсальный метод с помощью отражения, не повторяя все методы в классе с одним и тем же именем (т. е. используя System.Type.GetMethod (System.String, System.Type [])?
Пожалуйста, помогите мне исправить это! Спасибо!