Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/27/09 18:36:06 (15 years ago)
Author:
epitzer
Message:

Persistence fixes: Honor Storable.Name property, add more formatters and decomposers needed for HL integration. (#603)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/EnumerableDecomposer.cs

    r1625 r1679  
    5353    }
    5454  }
     55
     56
     57  [EmptyStorableClass]
     58  public class StackDecomposer : IDecomposer {
     59
     60    public int Priority {
     61      get { return 100; }
     62    }
     63
     64
     65    public bool CanDecompose(Type type) {
     66      return type.IsGenericType &&
     67        type.GetGenericTypeDefinition() == typeof(Stack<>);       
     68    }
     69
     70    public IEnumerable<Tag> CreateMetaInfo(object o) {
     71      return new Tag[] { };
     72    }
     73
     74    public IEnumerable<Tag> Decompose(object obj) {
     75      foreach (object o in (IEnumerable)obj) {
     76        yield return new Tag(null, o);
     77      }
     78    }
     79
     80    public object CreateInstance(Type type, IEnumerable<Tag> metaInfo) {
     81      return Activator.CreateInstance(type, true);
     82    }
     83
     84    public void Populate(object instance, IEnumerable<Tag> tags, Type type) {     
     85      MethodInfo addMethod = type.GetMethod("Push");     
     86      try {
     87        foreach (var tag in tags)
     88          addMethod.Invoke(instance, new[] { tag.Value });
     89      } catch (Exception e) {
     90        throw new PersistenceException("Exception caught while trying to populate enumerable.", e);
     91      }
     92    }
     93  }
    5594}
Note: See TracChangeset for help on using the changeset viewer.