Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/29/10 19:40:07 (13 years ago)
Author:
gkronber
Message:

Refactored cloning in HeuristicLab.Problems.OneMax. #922

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CloningRefactoring/HeuristicLab.Problems.OneMax/3.3/OneMaxSolution.cs

    r4068 r4681  
    3434  [Item("OneMaxSolution", "Represents a OneMax solution.")]
    3535  [StorableClass]
    36   public class OneMaxSolution : Item {
     36  public sealed class OneMaxSolution : Item {
    3737    public override Image ItemImage {
    3838      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Image; }
     
    6767    }
    6868
     69    [StorableConstructor]
     70    private OneMaxSolution(bool deserializing) : base(deserializing) { }
     71    private OneMaxSolution(OneMaxSolution original, Cloner cloner)
     72      : base(original, cloner) {
     73      binaryVector = cloner.Clone(original.binaryVector);
     74      quality = cloner.Clone(original.quality);
     75      Initialize();
     76    }
    6977    public OneMaxSolution() : base() { }
    7078    public OneMaxSolution(BinaryVector binaryVector, DoubleValue quality)
     
    7482      Initialize();
    7583    }
    76     [StorableConstructor]
    77     private OneMaxSolution(bool deserializing) : base(deserializing) { }
    7884
    7985    [StorableHook(HookType.AfterDeserialization)]
     86    private void AfterDeserialization() {
     87      Initialize();
     88    }
     89
    8090    private void Initialize() {
    8191      if (binaryVector != null) RegisterBinaryVectorEvents();
    8292      if (quality != null) RegisterQualityEvents();
    83     }
    84 
    85     public override IDeepCloneable Clone(Cloner cloner) {
    86       OneMaxSolution clone = new OneMaxSolution();
    87       cloner.RegisterClonedObject(this, clone);
    88       clone.binaryVector = (BinaryVector)cloner.Clone(binaryVector);
    89       clone.quality = (DoubleValue)cloner.Clone(quality);
    90       clone.Initialize();
    91       return clone;
    9293    }
    9394
Note: See TracChangeset for help on using the changeset viewer.