public static ParameterSettings AddParameterLinks(this ParameterSettings parameterSettings, Type type, IEnumerable <IParameterLink> parameterLinks, bool merge = true) { if (parameterSettings == null) { return(null); } if (type == null || parameterLinks == null || parameterLinks.Count() == 0) { return(parameterSettings); } ParameterSettings cloneSettings = parameterSettings.ShallowClone(); cloneSettings.ParameterMaps = new List <ParameterMap>(parameterSettings.ParameterMaps); ParameterMap parameterMap = cloneSettings.ParameterMap(type); if (parameterMap == null) { cloneSettings.ParameterMaps.Add(new ParameterMap { Type = type, ParameterLinks = new List <IParameterLink>(parameterLinks) }); } else { cloneSettings.ParameterMaps.Remove(parameterMap); cloneSettings.ParameterMaps.Add(parameterMap.AddParameterLinks(parameterLinks, merge)); } return(cloneSettings); }
public static ParameterSettings AddParameterMaps(this ParameterSettings parameterSettings, IEnumerable <ParameterMap> parameterMaps, bool merge = true) { if (parameterSettings == null) { return(null); } if (parameterMaps == null || parameterMaps.Count() == 0) { return(parameterSettings); } ParameterSettings cloneSettings = parameterSettings.ShallowClone(); if (cloneSettings.ParameterMaps == null) { cloneSettings.ParameterMaps = new List <ParameterMap>(); } else { cloneSettings.ParameterMaps = new List <ParameterMap>(cloneSettings.ParameterMaps); } foreach (ParameterMap parameterMap in parameterMaps) { ParameterMap cloneMap = cloneSettings.ParameterMaps.Find(x => parameterMap.Type == x.Type); if (cloneMap == null) { cloneSettings.ParameterMaps.Add(parameterMap); } else { if (merge) { cloneSettings.ParameterMaps.Add(cloneMap.AddParameterLinks(parameterMap.ParameterLinks, true)); } else { cloneSettings.ParameterMaps.Add(parameterMap); } cloneSettings.ParameterMaps.Remove(cloneMap); } } return(cloneSettings); }
public static ParameterMap ParameterMap(Type type, IEnumerable <IParameterLink> parameterLinks = null) { if (type == null) { return(null); } ParameterMap parameterMap = new ParameterMap { Type = type }; if (parameterLinks != null) { parameterMap = parameterMap.AddParameterLinks(parameterLinks); } return(parameterMap); }