Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/09/10 15:18:53 (13 years ago)
Author:
cneumuel
Message:

#1260

  • applied new cloning mechanism
  • changed role names
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive/sources/HeuristicLab.Hive/HeuristicLab.DataAccess/3.3/PersistableObject.cs

    r4424 r4755  
    3030  [DataContract]
    3131  [Serializable]
    32   public class PersistableObject: IPersistableObject, IDeepCloneable {
    33 
    34     public PersistableObject() { }
    35 
    36     public PersistableObject(bool deserializing) { }
    37 
     32  public class PersistableObject : IDeepCloneable, IPersistableObject {
    3833    [Storable]
    3934    [DataMember]
    4035    public Guid Id { get; set; }
     36
     37    public PersistableObject() { }
     38    [StorableConstructor]
     39    public PersistableObject(bool deserializing) { }
     40    protected PersistableObject(PersistableObject original, Cloner cloner) {
     41      cloner.RegisterClonedObject(original, this);
     42      this.Id = original.Id;
     43    }
     44    public virtual IDeepCloneable Clone(Cloner cloner) {
     45      return new PersistableObject(this, cloner);
     46    }
     47    public object Clone() {
     48      return Clone(new Cloner());
     49    }
    4150
    4251    public override bool Equals(object obj) {
     
    5564      return this.Id.GetHashCode();
    5665    }
    57 
    58     public virtual IDeepCloneable Clone(Cloner cloner) {
    59       PersistableObject clone = (PersistableObject)Activator.CreateInstance(this.GetType(), true);
    60       cloner.RegisterClonedObject(this, clone);
    61       clone.Id = this.Id;
    62       return clone;
    63     }
    64 
    65     public object Clone() {
    66       return Clone(new Cloner());
    67     }
    6866  }
    6967}
Note: See TracChangeset for help on using the changeset viewer.