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); }
public SuppleXmlDeserializer(IRuntimeTypeResolver runtimeTypeResolver) { _runtimeTypeResolver = runtimeTypeResolver; }
public InterfaceDeserializer(IRuntimeTypeResolver typeResolver, INodeDeserializer deserializer) { _deserializer = deserializer; _typeResolver = typeResolver; }