ParameterDefinitionCollection CloneParameterCollection(ParameterDefinitionCollection original) { ParameterDefinitionCollection clone = new ParameterDefinitionCollection( original.Container); foreach (ParameterDefinition param in original) { clone.Add(param); } return(clone); }
private MethodReference ImportMethod(MethodReference method, ImportGenericContext context) { if (method.IsGenericInstance) { return(ImportMethodSpecification(method, context)); } TypeReference declaringType = ImportType(method.DeclaringType, context); MethodReference methodReference = new MethodReference { Name = method.Name, HasThis = method.HasThis, ExplicitThis = method.ExplicitThis, DeclaringType = declaringType, CallingConvention = method.CallingConvention }; if (method.HasGenericParameters) { ImportGenericParameters(methodReference, method); } context.Push(methodReference); try { methodReference.ReturnType = ImportType(method.ReturnType, context); if (!method.HasParameters) { return(methodReference); } Collection <ParameterDefinition> parameters = method.Parameters; ParameterDefinitionCollection parameterDefinitionCollection = methodReference.parameters = new ParameterDefinitionCollection(methodReference, parameters.Count); for (int i = 0; i < parameters.Count; i++) { parameterDefinitionCollection.Add(new ParameterDefinition(ImportType(parameters[i].ParameterType, context))); } return(methodReference); } finally { context.Pop(); } }
ParameterDefinitionCollection CloneParameterCollection (ParameterDefinitionCollection original) { ParameterDefinitionCollection clone = new ParameterDefinitionCollection ( original.Container); foreach (ParameterDefinition param in original) clone.Add (param); return clone; }
private void AddParameters(MethodDefinition getterInfo, MethodDefinition setterInfo) { ParameterDefinitionCollection propParameters = null; if (getterInfo != null) { propParameters = getterInfo.Parameters; } else if (setterInfo != null) { ParameterDefinitionCollection tmpParameters = setterInfo.Parameters; Debug.Assert(tmpParameters != null && tmpParameters.Count >= 1, "Impossible! Property setter must have at least one parameter."); propParameters = new ParameterDefinitionCollection(setterInfo); for (int i = 0; i < tmpParameters.Count - 1; i++) { propParameters.Add(tmpParameters[i]); } } else { Debug.Assert(false, "Impossible! Property must have either getter or setter or both."); } foreach (ParameterDefinition parameterDefinition in propParameters) { if (parameters.ContainsKey(parameterDefinition.Name)) { Logger.Warning("Properties can't have more than one parameter with the same name."); return; } parametersNames.Add(parameterDefinition.Name); parameters.Add(parameterDefinition.Name, new MyParameterInfo(parameterDefinition)); } }