Как найти конкретную общую перегрузку с помощью отражения?

Я пытаюсь создатьExpression это вызовет определенный универсальный перегруженный метод (Enumerable.Average в моем первом тестовом случае). Тем не менее, конкретные привязки типов не известны до времени выполнения, поэтому мне нужно использоватьReflection найти и создать правильный универсальный метод (Expression создается из разобранного текста).

Так что, если я знаю во время выполнения, что я хочу найти эту конкретную перегрузку:

public static double Average(this IEnumerable source, Func selector)

Как мне решить этот конкретныйMethodInfo используя отражение?

До сих пор у меня есть следующее утверждение выбора:

MethodInfo GetMethod(Type argType, Type returnType)
{
    var methods = from method in typeof(Enumerable).GetMethods(BindingFlags.Public | BindingFlags.Static)
      where method.Name == "Average" &&
      method.ContainsGenericParameters &&                              
      method.GetParameters().Length == 2 &&
      // and some condition where method.GetParameters()[1] is a Func that returns type argType
      method.ReturnType == returnType
      select method;

      Debug.Assert(methods.Count() == 1);
      return methods.FirstOrDefault();
}

Выше сужается до трех перегрузок, но я хочу отразить и найти конкретную перегрузку, которая требуетFunc где .argType == typeof(int)

Я в тупике, и любая помощь приветствуется.

Ответы на вопрос(4)

Ваш ответ на вопрос