Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/26/09 17:56:55 (15 years ago)
Author:
epitzer
Message:

Almost complete solution for correctly handling parent references. (#506)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/New Persistence Exploration/Persistence/Persistence/Default/Decomposers/KeyValuePairDecomposer.cs

    r1421 r1434  
    55using HeuristicLab.Persistence.Core;
    66using HeuristicLab.Persistence.Interfaces;
     7using System.Reflection;
    78
    89namespace HeuristicLab.Persistence.Default.Decomposers {
     
    2324
    2425    public object CreateInstance(Type type) {
    25       return null;
     26      return Activator.CreateInstance(type, true);
    2627    }
    2728
     
    2930      IEnumerator<Tag> iter = o.GetEnumerator();
    3031      iter.MoveNext();
    31       object key = iter.Current.Value;
     32      FieldInfo keyFieldInfo =
     33        t.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
     34        .Single((fi) => fi.Name == "key");
     35      FieldInfo valueFieldInfo =
     36        t.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
     37        .Single((fi) => fi.Name == "value");
     38      iter.Current.SafeSet((value) => keyFieldInfo.SetValue(instance, value));     
    3239      iter.MoveNext();
    33       object value = iter.Current.Value;
    34       return Activator.CreateInstance(t, new object[] { key, value });     
     40      iter.Current.SafeSet((value) => valueFieldInfo.SetValue(instance, value));
     41      return instance;
    3542    }   
    3643  }
Note: See TracChangeset for help on using the changeset viewer.