Ejemplo n.º 1
0
 /// <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);
     }
 }
Ejemplo n.º 2
0
 /// <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);
         }
     }
 }