public ResolvedAttributeSet MergeSet(ResolvedAttributeSet toMerge) { ResolvedAttributeSet rasResult = this; if (toMerge != null) { int l = toMerge.Set.Count; for (int i = 0; i < l; i++) { // don't pass in the context here ResolvedAttributeSet rasMerged = rasResult.Merge(toMerge.Set[i]); if (rasMerged != rasResult) { rasResult = rasMerged; } // copy context here toMerge.CopyAttCtxMappingsInto(rasResult.Ra2attCtxSet, rasResult.AttCtx2ra, toMerge.Set[i]); } } return(rasResult); }
public ResolvedAttributeSet MergeSet(ResolvedAttributeSet toMerge) { ResolvedAttributeSet rasResult = this; if (toMerge != null) { foreach (ResolvedAttribute ra in toMerge.Set) { // don't pass in the context here ResolvedAttributeSet rasMerged = rasResult.Merge(ra); if (rasMerged != rasResult) { rasResult = rasMerged; } // get the attribute from the merged set, attributes that were already present were merged, not replaced rasResult.ResolvedName2resolvedAttribute.TryGetValue(ra.ResolvedName, out ResolvedAttribute currentRa); // copy context here toMerge.CopyAttCtxMappingsInto(rasResult.Ra2attCtxSet, rasResult.AttCtx2ra, ra, currentRa); } } return(rasResult); }