Free cookie consent management tool by TermsFeed Policy Generator

Changeset 1318


Ignore:
Timestamp:
03/09/09 15:33:44 (15 years ago)
Author:
epitzer
Message:

added default constructor that includes all serializers of the persistence assembly. (#506)

Location:
branches/New Persistence Exploration/Persistence/Persistence
Files:
4 edited

Legend:

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

    r1317 r1318  
    6767    private List<Thunk> finalFixes;
    6868
     69    public DeSerializer() : this(
     70      InterfaceInstantiatior.InstantiateAll<IPrimitiveSerializer>(),
     71      InterfaceInstantiatior.InstantiateAll<ICompoundSerializer>()) {}   
     72
    6973    public DeSerializer(
    7074        IEnumerable<IPrimitiveSerializer> primitiveSerializers,
     
    8387      }
    8488      this.customSerializers = new List<ICompoundSerializer>(customSerializers);
    85       this.finalFixes = new List<Thunk>();
    8689    }
    8790
    8891    public object DeSerialize(IEnumerable<IParseToken> tokens) {
     92      this.finalFixes = new List<Thunk>();
    8993      foreach (IParseToken token in tokens) {
    9094        handlers[token.GetType()].Invoke(token);
     
    9599      return compositeStack.Pop().Obj;
    96100    }
     101
    97102    private void CompositeStartHandler(IParseToken token) {
    98103      CompositeStart start = (CompositeStart)token;
  • branches/New Persistence Exploration/Persistence/Persistence/NewSerializationTest.cs

    r1317 r1318  
    5353      r.dict.Add("two", 2);
    5454      r.dict.Add("three", 3);
    55 
    56       Serializer s = new Serializer(r,
    57         new IPrimitiveSerializer[] {
    58           new String2XMLSerializer(),
    59           new Int2XMLSerializer(),
    60           new Double2XmlSerializer(),
    61           new Boolean2XmlSerializer(),
    62           new DateTime2XmlSerializer(),
    63         }, new ICompoundSerializer[] {
    64           new EnumerableSerializer(),
    65           new ArraySerializer(),
    66           new KeyValuePair2XmlSerializer(),
    67           new Dictionary2XmlSerializer(),
    68         });     
     55      Serializer s = new Serializer(r);       
    6956      Persistence.XmlFormatter xmlFormatter = new Persistence.XmlFormatter();
    7057      StreamWriter writer = new StreamWriter("test.xml");
     
    7663      writer.Close();
    7764      XmlParser parser = new XmlParser(new StreamReader("test.xml"));
    78       DeSerializer deSerializer = new DeSerializer(
    79         new IPrimitiveSerializer[] {
    80           new Int2XMLSerializer(),
    81           new String2XMLSerializer(),
    82           new Double2XmlSerializer(),
    83           new Boolean2XmlSerializer(),
    84           new DateTime2XmlSerializer(),
    85         },
    86         new ICompoundSerializer[] {
    87           new ArraySerializer(),
    88           new EnumerableSerializer(),
    89           new KeyValuePair2XmlSerializer(),
    90           new Dictionary2XmlSerializer(),
    91         });     
     65      DeSerializer deSerializer = new DeSerializer();       
    9266      object o = deSerializer.DeSerialize(parser);
    9367      Console.Out.WriteLine(Util.AutoFormat(o, true));
  • branches/New Persistence Exploration/Persistence/Persistence/Serializer.cs

    r1317 r1318  
    22using System.Collections;
    33using System;
     4using System.Reflection;
    45
    56namespace Persistence {
     
    1213    private Dictionary<Type, IPrimitiveSerializer> primitiveSerializers;
    1314    private List<ICompoundSerializer> compoundSerializers;
     15
     16    public Serializer(object obj) :
     17      this(obj,
     18      InterfaceInstantiatior.InstantiateAll<IPrimitiveSerializer>(),
     19      InterfaceInstantiatior.InstantiateAll<ICompoundSerializer>()) {}
    1420
    1521    public Serializer(object obj,
  • branches/New Persistence Exploration/Persistence/Persistence/Util.cs

    r1279 r1318  
    55
    66namespace Persistence {
     7  public class InterfaceInstantiatior {
     8    public static List<T> InstantiateAll<T>() {
     9      return InstantiateAll<T>(Assembly.GetExecutingAssembly());
     10    }
     11    public static List<T> InstantiateAll<T>(Assembly a) {
     12      List<T> instances = new List<T>();
     13      foreach (Type t in a.GetTypes()) {
     14        if (t.GetInterface(typeof(T).FullName) != null) {
     15          ConstructorInfo ci = t.GetConstructor(new Type[] { });
     16          if (ci != null) {
     17            instances.Add((T)ci.Invoke(new object[] { }));
     18          }
     19        }
     20      }
     21      return instances;
     22    }
     23  }
    724  public class Util {
    825    public static string AutoFormat(object o) {
Note: See TracChangeset for help on using the changeset viewer.