/// <summary> /// Clones all the members of <paramref name="sourceCollection"/>, calls FillCopy for each cloned member and /// </summary> public static void CopyDictionary <TKey, TValue>(this IExolutioCloneable cloneable, Dictionary <TKey, TValue> sourceDictionary, Dictionary <TKey, TValue> targetDictionary, ProjectVersion projectVersion, ElementCopiesMap createdCopies) where TKey : ExolutioObject where TValue : IExolutioCloneable { foreach (KeyValuePair <TKey, TValue> collectionItem in sourceDictionary) { TValue itemCopy = (TValue)collectionItem.Value.Clone(projectVersion, createdCopies); collectionItem.Value.FillCopy(itemCopy, projectVersion, createdCopies); Guid keyGuid = createdCopies.GetGuidForCopyOf(collectionItem.Key); targetDictionary.Add(projectVersion.Project.TranslateComponent <TKey>(keyGuid), itemCopy); } }
/// <summary> /// Registers (already existing) copies of the members of <paramref name="sourceCollection"/> into <paramref name="targetCollection"/>. /// </summary> public static void CopyRefCollection <T>(this IExolutioCloneable cloneable, IEnumerable <T> sourceCollection, UndirectCollection <T> targetCollection, ProjectVersion projectVersion, ElementCopiesMap createdCopies, bool asGuid = false) where T : ExolutioObject { foreach (T collectionItem in sourceCollection) { Guid guid = createdCopies.GetGuidForCopyOf(collectionItem); if (!asGuid) { targetCollection.Add(targetCollection.Project.TranslateComponent <T>(guid)); } else { targetCollection.AddAsGuidSilent(guid); } } }