示例#1
0
        /// <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();
        }
示例#2
0
        /// <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);
        }