public static string MethodInfo(MethodInfo info, bool includeDeclaringType = true)
{
string declTypeName = Type(info.DeclaringType);
string returnTypeName = Type(info.ReturnType);
string[] paramNames = info.GetParameters().Select(p => Type(p.ParameterType)).ToArray();
string[] genArgNames = info.GetGenericArguments().Select(Type).ToArray();
return string.Format(System.Globalization.CultureInfo.InvariantCulture,
"{4} {0}{1}{3}({2})",
includeDeclaringType ? declTypeName + "." : "",
info.Name,
paramNames.ToString(", "),
genArgNames.Length > 0 ? "<" + genArgNames.ToString(", ") + ">" : "",
returnTypeName);
}