public static MethodDefinition GetMethod(Collection <MethodDefinition> methods, MethodReference reference) { for (int i = 0; i < methods.Count; i++) { var method = methods [i]; if (method.Name != reference.Name) { continue; } if (method.HasGenericParameters != reference.HasGenericParameters) { continue; } if (method.HasGenericParameters && method.GenericParameters.Count != reference.GenericParameters.Count) { continue; } if (!AreSame(method.ReturnType, reference.ReturnType)) { continue; } if (method.IsVarArg() != reference.IsVarArg()) { continue; } if (method.IsVarArg() && IsVarArgCallTo(method, reference)) { return(method); } if (method.HasParameters != reference.HasParameters) { continue; } if (!method.HasParameters && !reference.HasParameters) { return(method); } if (!AreSame(method.Parameters, reference.Parameters)) { continue; } return(method); } return(null); }
public MethodReference ImportMethod(MethodReference method, IGenericContext context) { if (method.IsGenericInstance) { return(ImportMethodSpecification(method, context)); } var declaring_type = ImportType(method.DeclaringType, context); var reference = new MethodReference { Name = method.Name, HasThis = method.HasThis, ExplicitThis = method.ExplicitThis, DeclaringType = declaring_type, }; if (method.IsVarArg()) { reference.CallingConvention &= MethodCallingConvention.VarArg; } if (method.HasGenericParameters) { ImportGenericParameters(reference, method); } reference.ReturnType = ImportType(method.ReturnType, context ?? reference); if (!method.HasParameters) { return(reference); } var reference_parameters = reference.Parameters; var parameters = method.Parameters; for (int i = 0; i < parameters.Count; i++) { reference_parameters.Add( new ParameterDefinition(ImportType(parameters [i].ParameterType, context ?? reference))); } return(reference); }
public MethodReference ImportMethod(MethodReference method, IGenericContext context) { if (method.IsGenericInstance) return ImportMethodSpecification (method, context); var declaring_type = ImportType (method.DeclaringType, context); var reference = new MethodReference { Name = method.Name, HasThis = method.HasThis, ExplicitThis = method.ExplicitThis, DeclaringType = declaring_type, }; if (method.IsVarArg ()) reference.CallingConvention &= MethodCallingConvention.VarArg; if (method.HasGenericParameters) ImportGenericParameters (reference, method); reference.ReturnType = ImportType (method.ReturnType, context ?? reference); if (!method.HasParameters) return reference; var reference_parameters = reference.Parameters; var parameters = method.Parameters; for (int i = 0; i < parameters.Count; i++) reference_parameters.Add ( new ParameterDefinition (ImportType (parameters [i].ParameterType, context ?? reference))); return reference; }
public static MethodDefinition GetMethod (Collection<MethodDefinition> methods, MethodReference reference) { for (int i = 0; i < methods.Count; i++) { var method = methods [i]; if (method.Name != reference.Name) continue; if (method.HasGenericParameters != reference.HasGenericParameters) continue; if (method.HasGenericParameters && method.GenericParameters.Count != reference.GenericParameters.Count) continue; if (!AreSame (method.ReturnType, reference.ReturnType)) continue; if (method.IsVarArg () != reference.IsVarArg ()) continue; if (method.IsVarArg () && IsVarArgCallTo (method, reference)) return method; if (method.HasParameters != reference.HasParameters) continue; if (!method.HasParameters && !reference.HasParameters) return method; if (!AreSame (method.Parameters, reference.Parameters)) continue; return method; } return null; }
public static MethodDefinition GetMethod(Collection <MethodDefinition> methods, MethodReference reference) { for (int i = 0; i < methods.Count; i++) { MethodDefinition methodDefinition = methods[i]; if (!(methodDefinition.Name != reference.Name) && methodDefinition.HasGenericParameters == reference.HasGenericParameters && (!methodDefinition.HasGenericParameters || methodDefinition.GenericParameters.Count == reference.GenericParameters.Count) && AreSame(methodDefinition.ReturnType, reference.ReturnType) && methodDefinition.IsVarArg() == reference.IsVarArg()) { if (methodDefinition.IsVarArg() && IsVarArgCallTo(methodDefinition, reference)) { return(methodDefinition); } if (methodDefinition.HasParameters == reference.HasParameters) { if (!methodDefinition.HasParameters && !reference.HasParameters) { return(methodDefinition); } if (AreSame(methodDefinition.Parameters, reference.Parameters)) { return(methodDefinition); } } } } return(null); }