internal static MethodInfo FindMethod(Type type, string name, ReadOnlyCollection <Expression> args, Type[] typeArgs)
{
MethodInfo[] methods = type.GetStaticMethods().Where(m => m.Name == name).ToArray();
if (methods.Length == 0)
{
throw Error.NoMethodOnType(name, type);
}
MethodInfo mi = methods.FirstOrDefault(m => ArgsMatch(m, args, typeArgs));
if (mi == null)
{
throw Error.NoMethodOnTypeMatchingArguments(name, type);
}
if (typeArgs != null)
{
return(mi.MakeGenericMethod(typeArgs));
}
return(mi);
}