Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/03/17 11:41:43 (7 years ago)
Author:
gkronber
Message:

#2520

  • renamed StorableClass -> StorableType
  • changed persistence to use GUIDs instead of type names
Location:
branches/PersistenceOverhaul/HeuristicLab.Persistence/4.0/Transformers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/PersistenceOverhaul/HeuristicLab.Persistence/4.0/Transformers/StorableClassTransformer.cs

    r14594 r14711  
    3030  internal sealed class StorableClassBoxTransformer : BoxTransformer<object> {
    3131    public override bool CanTransformType(Type type) {
    32       return StorableClassAttribute.IsStorableClass(type) || type.BaseType != null && CanTransformType(type.BaseType);
     32      return StorableTypeAttribute.IsStorableType(type) && !type.IsValueType || // don't transform structs
     33        type.BaseType != null && CanTransformType(type.BaseType);
    3334    }
    3435
  • branches/PersistenceOverhaul/HeuristicLab.Persistence/4.0/Transformers/Transformers.cs

    r14594 r14711  
    3232using Google.ProtocolBuffers;
    3333using HeuristicLab.Persistence.Core;
     34using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3435
    3536namespace HeuristicLab.Persistence {
     
    548549      foreach (var t in components) {
    549550        string name = mapper.GetString(t.Key);
    550         MemberInfo[] mis = type.GetMember(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
     551        MemberInfo[] mis = type.GetMember(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);       
    551552        if (mis.Length != 1)
    552553          throw new Exception("ambiguous struct member name " + name);
    553554        MemberInfo mi = mis[0];
     555        if(StorableAttribute.IsStorable(mi))
     556          throw new PersistenceException("Don't use stroable attributes for structs as all fields are serialized automatically.");
    554557        if (mi.MemberType == MemberTypes.Field)
    555558          ((FieldInfo)mi).SetValue(obj, mapper.GetObject(t.Value));
     
    916919        var comparer = propertyInfo.GetValue(value);
    917920        var comparerType = comparer.GetType();
    918         if (Default.CompositeSerializers.Storable.StorableClassAttribute.IsStorableClass(comparerType))
     921        if (Default.CompositeSerializers.Storable.StorableTypeAttribute.IsStorableType(comparerType))
    919922          uIntArrayBox.AddValues(mapper.GetBoxId(comparer));
    920923        else if (comparerType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy).Any())
     
    986989
    987990      var comparerType = comparer.GetType();
    988       if (Default.CompositeSerializers.Storable.StorableClassAttribute.IsStorableClass(comparerType))
     991      if (Default.CompositeSerializers.Storable.StorableTypeAttribute.IsStorableType(comparerType))
    989992        dictionaryBox.SetComparerId(mapper.GetBoxId(comparer));
    990993      else if (comparerType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy).Any())
Note: See TracChangeset for help on using the changeset viewer.