public static string SignatureFor(MethodReference method) { if (cache.ContainsKey(method)) { return(cache[method]); } var sb = new StringBuilder(); sb.Append(method.ReturnType.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) { int sentinel = method.GetSentinel(); for (int i = 0; i < method.Parameters.Count; i++) { if (i > 0) { sb.Append(","); } if (i == sentinel) { sb.Append("...,"); } sb.Append(method.Parameters[i].ParameterType.FullName); } } sb.Append(")"); var result = sb.ToString(); cache[method] = result; return(result); }
static string GetFullName(MethodReference method) { int sentinel = method.GetSentinel(); StringBuilder sb = new StringBuilder(); sb.Append(method.ReturnType.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) { sb.Append("...,"); } sb.Append(method.Parameters [i].ParameterType.FullName); } } sb.Append(")"); return(sb.ToString()); }
//based on the code from Mono.Cecil.MethodReference.ToString() public static string getMethodParametersSiganature(MethodReference methodReference) { int sentinel = methodReference.GetSentinel(); var builder = new StringBuilder(); builder.Append("("); for (int i = 0; i < methodReference.Parameters.Count; i++) { if (i > 0) { builder.Append(","); } if (i == sentinel) { builder.Append("...,"); } builder.Append(methodReference.Parameters[i].ParameterType.FullName); } builder.Append(")"); return(builder.ToString()); }