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; }
//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(); }
public int GetSentinel() { return(m_function.GetSentinel()); }
internal static string smethod_0(MethodReference methodReference_0) { int sentinel = methodReference_0.GetSentinel(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(methodReference_0.ReturnType.ReturnType.FullName); stringBuilder.Append(" "); if (methodReference_0.DeclaringType != null) { stringBuilder.Append(methodReference_0.DeclaringType.FullName + "::"); } stringBuilder.Append(methodReference_0.Name); if (methodReference_0.GenericParameters.Count > 0) { stringBuilder.Append("<"); } for (int i = 0; i < methodReference_0.GenericParameters.Count; i++) { if (i > 0) { stringBuilder.Append(","); } stringBuilder.Append(methodReference_0.GenericParameters[i].Name); } if (methodReference_0.GenericParameters.Count > 0) { stringBuilder.Append(">"); } stringBuilder.Append("("); for (int i = 0; i < methodReference_0.Parameters.Count; i++) { if (i > 0) { stringBuilder.Append(","); } if (i == sentinel) { stringBuilder.Append("...,"); Logger.LogInfo("Sentinel"); Debugger.Break(); } if (methodReference_0.Parameters[i].ParameterType != null) { stringBuilder.Append(methodReference_0.Parameters[i].ParameterType.FullName); } } stringBuilder.Append(")"); return stringBuilder.ToString(); }
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 (); }