Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/25/09 17:16:32 (15 years ago)
Author:
epitzer
Message:

Implement persistence of storables as decomposer. (#506)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/New Persistence Exploration/Persistence/Persistence/Core/DeSerializer.cs

    r1362 r1419  
    33using HeuristicLab.Persistence.Interfaces;
    44
    5 namespace HeuristicLab.Persistence.Core {
    6 
     5namespace HeuristicLab.Persistence.Core { 
    76
    87  struct ParentReference { }
     
    1918
    2019    public object Obj { get; private set; }
    21     public readonly List<object> customValues;
     20    public List<Tag> customValues;
    2221
    2322    public CustomComposite(object obj) {
    2423      Obj = obj;
    25       customValues = new List<object>();
     24      customValues = new List<Tag>();
    2625    }
    2726
    28     public void AddValue(object value) {
    29       customValues.Add(value);
     27    public void AddValue(string name, object value) {
     28      customValues.Add(new Tag(name, value));
    3029    }
    3130
    32     public Setter GetSetter(string name) {
     31    public Setter GetSetter(string name) {     
    3332      int index = customValues.Count - 1;
    34       return value => customValues[index] = value;
     33      Tag t = customValues[index];     
     34      return value => t.Value = value;
    3535    }
    3636  }
     
    122122      if ( serializerMapping.ContainsKey(type) )
    123123        decomposer = serializerMapping[type] as IDecomposer;     
    124       if (decomposer != null) {
    125         instance = new ParentReference();
     124      if (decomposer != null) {       
     125        instance = decomposer.CreateInstance(type);
     126        if (instance == null)
     127          instance = new ParentReference();
    126128        parentStack.Push(new CustomComposite(instance));       
    127129      } else {       
     
    143145      if (decomposer != null) {
    144146        CustomComposite customComposite = (CustomComposite)parentStack.Pop();
    145         object deserializedObject =
    146           decomposer.Compose(customComposite.customValues, type);
     147        object deserializedObject =         
     148          decomposer.Populate(customComposite.Obj, customComposite.customValues, type);
    147149        if ( end.Id != null )
    148150          id2obj[(int)end.Id] = deserializedObject;       
     
    188190          ((StorableComposite)accessibleObject).SetValue(name, value);
    189191        } else if (accessibleObject is CustomComposite) {
    190           ((CustomComposite)accessibleObject).AddValue(value);
     192          ((CustomComposite)accessibleObject).AddValue(name, value);
    191193        }
    192194      }
Note: See TracChangeset for help on using the changeset viewer.