static string GetFullName (MethodReference method)
{
var sentinel = method.Parameters.FirstOrDefault (p => p.ParameterType.IsSentinel);
var sentinel_pos = -1;
if (sentinel != null)
sentinel_pos = method.Parameters.IndexOf (sentinel);
StringBuilder sb = new StringBuilder ();
sb.Append (method.ReturnType.FullName);
sb.Append (" ");
sb.Append (method.DeclaringType.FullName);
sb.Append ("::");
sb.Append (method.Name);
if (method.HasGenericParameters) {
sb.Append ("<");
for (int i = 0; i < method.GenericParameters.Count; i++ ) {
if (i > 0)
sb.Append (",");
sb.Append (method.GenericParameters [i].Name);
}
sb.Append (">");
}
sb.Append ("(");
if (method.HasParameters) {
for (int i = 0; i < method.Parameters.Count; i++) {
if (i > 0)
sb.Append (",");
if (i == sentinel_pos)
sb.Append ("...,");
sb.Append (method.Parameters [i].ParameterType.FullName);
}
}
sb.Append (")");
return sb.ToString ();
}