private IEnumerable <ParameterDoc> MergeParameters( IList <ParameterDoc> reflectedParameters, IList <ParameterDoc> documentedParameters) { List <ParameterDoc> result = new List <ParameterDoc>(); Dictionary <string, int> lookup = reflectedParameters .Select((t, index) => new KeyValuePair <string, int>(t.Name, index)) .ToDictionary(p => p.Key, p => p.Value); result.AddRange(reflectedParameters); foreach (ParameterDoc parameterDoc in documentedParameters) { if (lookup.TryGetValue(parameterDoc.Name, out int index)) { ParameterDoc reflectedParameterDoc = result[index]; result[index] = new ParameterDoc(reflectedParameterDoc.Name, reflectedParameterDoc.ParameterType, reflectedParameterDoc.ParameterKind, parameterDoc.Description); } else { result.Add(parameterDoc); } } return(result); }
public MethodDoc AddParameter(ParameterDoc parameter) => WithParameters(Parameters.Add(parameter));