/// <summary> /// Combine combines a child with a parent as necessary and returns the combined object /// </summary> /// <param name="combinedUnitPatternSets">The child object</param> /// <param name="parentUnitPatternSets">The parent object</param> /// <returns>The combined object</returns> public static UnitPatternSet[] Combine(UnitPatternSet[] combinedUnitPatternSets, UnitPatternSet[] parentUnitPatternSets) { if (combinedUnitPatternSets == null && parentUnitPatternSets == null) { return null; } else if (combinedUnitPatternSets == null) { return (UnitPatternSet[])parentUnitPatternSets.Clone(); } else if (parentUnitPatternSets == null) { return combinedUnitPatternSets; } List<UnitPatternSet> combinedUnitPatternSetList = new List<UnitPatternSet>(combinedUnitPatternSets); foreach (UnitPatternSet parentUnitPatternSet in parentUnitPatternSets) { if (!(from ups in combinedUnitPatternSets where string.Compare(ups.Id, parentUnitPatternSet.Id, StringComparison.InvariantCulture) == 0 select ups).Any()) { // this unit pattern set does not exist in the combined list combinedUnitPatternSetList.Add(parentUnitPatternSet); } } return combinedUnitPatternSetList.ToArray(); }
/// <summary> /// GetUnitPatternSets gets the resolved UnitPatternSets /// </summary> /// <returns>The resolved UnitPatternSets</returns> private UnitPatternSet[] GetUnitPatternSets() { UnitPatternSet[] unitPatternSets = null; if (this.unitPatternSetsNoParents != null) { unitPatternSets = (UnitPatternSet[])this.unitPatternSetsNoParents.Clone(); } Culture[] parentCultures = this.GetParents(); foreach (Culture parentCulture in parentCultures) { unitPatternSets = UnitPatternSet.Combine(unitPatternSets, parentCulture.unitPatternSetsNoParents); } return(unitPatternSets); }