Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/02/08 14:13:06 (15 years ago)
Author:
gkronber
Message:

Refactored cloning in HL.Core, HL.Data and HL.Constraints

#285 (Cloning could be improved by creating objects at the bottom of the cloning chain with 'new' instead of the top with Activator.CreateInstance())

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CloningRefactorBranch/HeuristicLab.Data/BoolData.cs

    r776 r885  
    5454      Data = data;
    5555    }
     56
     57    /// <summary>
     58    /// Copy constructor to create deep clones.
     59    /// </summary>
     60    /// <param name="original">The instance to be cloned.</param>
     61    public BoolData(BoolData original) : this(original, new Dictionary<Guid, object>()) { }
     62
     63    /// <summary>
     64    /// Copy constructor to create deep clones reusing already cloned object references.
     65    /// </summary>
     66    /// <param name="original">The instance to be cloned.</param>
     67    /// <param name="clonedObjects">Already cloned objects (for referential integrity).</param>
     68    protected BoolData(BoolData original, IDictionary<Guid, object> clonedObjects)
     69      : base(original, clonedObjects) {
     70      this.Data = original.Data;
     71    }
    5672    /// <summary>
    5773    /// Creates a new instance of the <see cref="BoolDataView"/> class.
     
    6379
    6480    /// <summary>
    65     /// Clones the current instance.
     81    /// Clones the current instance using the copy constructor.
    6682    /// </summary>
    67     /// <remarks>The cloned instance is added to the <paramref name="dictionary"/>.</remarks>
    6883    /// <param name="clonedObjects">Dictionary of all already cloned objects.</param>
    6984    /// <returns>The cloned instance as <see cref="BoolData"/>.</returns>
    7085    public override object Clone(IDictionary<Guid, object> clonedObjects) {
    71       BoolData clone = new BoolData();
    72       clonedObjects.Add(Guid, clone);
    73       clone.Data = Data;
    74       return clone;
     86      return new BoolData(this, clonedObjects);
    7587    }
    7688    /// <summary>
     
    8294    /// <param name="persistedObjects">The dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
    8395    /// <returns>The saved <see cref="XmlNode"/>.</returns>
    84     public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
     96    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
    8597      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
    8698      node.InnerText = ToString();
     
    95107    /// <param name="restoredObjects">The dictionary of all already restored objects.
    96108    /// (Needed to avoid cycles.)</param>
    97     public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
     109    public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
    98110      base.Populate(node, restoredObjects);
    99111      Data = bool.Parse(node.InnerText);
Note: See TracChangeset for help on using the changeset viewer.