Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/06/10 01:56:04 (14 years ago)
Author:
swagner
Message:

Merged cloning refactoring branch back into trunk (#922)

Location:
trunk/sources
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Core/3.3/Collections/KeyedItemCollection.cs

    r4419 r4722  
    4444    }
    4545
     46    [StorableConstructor]
     47    protected KeyedItemCollection(bool deserializing) : base(deserializing) { }
     48    protected KeyedItemCollection(KeyedItemCollection<TKey, TItem> original, Cloner cloner) {
     49      cloner.RegisterClonedObject(original, this);
     50      foreach (TItem item in original.dict.Values) {
     51        TItem clonedItem = cloner.Clone(item);
     52        dict.Add(GetKeyForItem(clonedItem), clonedItem);
     53      }
     54    }
    4655    protected KeyedItemCollection() : base() { }
    4756    protected KeyedItemCollection(int capacity) : base(capacity) { }
    4857    protected KeyedItemCollection(IEnumerable<TItem> collection) : base(collection) { }
    49     [StorableConstructor]
    50     protected KeyedItemCollection(bool deserializing) : base(deserializing) { }
    5158
    5259    public object Clone() {
    5360      return Clone(new Cloner());
    5461    }
    55     public virtual IDeepCloneable Clone(Cloner cloner) {
    56       KeyedItemCollection<TKey, TItem> clone = (KeyedItemCollection<TKey, TItem>)Activator.CreateInstance(this.GetType());
    57       cloner.RegisterClonedObject(this, clone);
    58       foreach (TItem item in dict.Values) {
    59         TItem clonedItem = (TItem)cloner.Clone(item);
    60         clone.dict.Add(GetKeyForItem(clonedItem), clonedItem);
    61       }
    62       return clone;
    63     }
     62    public abstract IDeepCloneable Clone(Cloner cloner);
    6463
    6564    public new ReadOnlyKeyedItemCollection<TKey, TItem> AsReadOnly() {
Note: See TracChangeset for help on using the changeset viewer.