public static MethodInfo GetPublicStaticMethod(this Type type, string name, params Type[] parameterTypes)
{
return type.GetRuntimeMethods()
.FirstOrDefault(m =>
{
if (m.IsPublic && m.IsStatic && m.Name.Equals(name))
{
var parameters = m.GetParameters();
return parameters.Length == parameterTypes.Length
&& parameters.Zip(parameterTypes, (pi, pt) => pi.Equals(pt)).All(r => r);
}
return false;
});
}