Ejemplo n.º 1
0
        private DelegatorDeserializer CreateDelegator(IRuntimeTypeResolver resolver)
        {
            DelegatorDeserializer delegator = new DelegatorDeserializer();
            var referenceStore = new ReferenceStore();

            // First check if the node is an interface
            delegator.NodeDeserializers.Add(new InterfaceDeserializer(resolver, delegator));
            delegator.NodeDeserializers.Add(new ArrayNodeDeserializer(delegator));

            // Value Deserializers
            delegator.NodeDeserializers.Add(new ArrayValueDeserializer(delegator));
            delegator.NodeDeserializers.Add(new EnumDeserializer());
            delegator.NodeDeserializers.Add(new ConvertableDeserializer());
            delegator.NodeDeserializers.Add(new CollectionValueDeserializer(delegator));
            delegator.NodeDeserializers.Add(new ReferenceVariableDeserializer(referenceStore));

            // then check if the node is an array

            // if not, handle if with the context handlers
            delegator.NodeDeserializers.Add(
                new ContextNodeDeserializer(
                    new List <INodeHandlerFactory>()
            {
                new ReferenceAddingHandlerFactory(referenceStore),
                new CollectionNodeHandlerFactory(delegator),
                new MemberNodeHandlerFactory(delegator)
            },
                    delegator
                    )
                );

            // Type Name Creators
            delegator.TypeNameCreators.Add(new KeyValuePairNameCreator());
            delegator.TypeNameCreators.Add(new GenericNameCreator(delegator));
            return(delegator);
        }
Ejemplo n.º 2
0
 public SuppleXmlDeserializer(IRuntimeTypeResolver runtimeTypeResolver)
 {
     _runtimeTypeResolver = runtimeTypeResolver;
 }
Ejemplo n.º 3
0
 public InterfaceDeserializer(IRuntimeTypeResolver typeResolver,
                              INodeDeserializer deserializer)
 {
     _deserializer = deserializer;
     _typeResolver = typeResolver;
 }