public void RegisterXdtoDeserializer(XmlDataType type, IXdtoDeserializer processor) { if (processor is IXdtoDeserializer) { deserializers [type] = processor as IXdtoDeserializer; } }
public IValue ReadXdto(IXdtoValue xdtoObject) { var t = xdtoObject.XmlType(); if (deserializers.ContainsKey(t)) { var d = deserializers [t]; return(d.DeserializeXdto(xdtoObject)); } var xdtoType = XdtoFactory.Type(t); if (xdtoType == null) { throw new XdtoException(String.Format("Не поддерживается сериализация для {0}", t)); } // TODO: Значения XDTO не из примитивных типов if (xdtoType is XdtoValueType) { var baseType = (xdtoType as XdtoValueType).BaseType; t = new XmlDataType(baseType.Name, baseType.NamespaceUri); if (deserializers.ContainsKey(t)) { var d = deserializers [t]; return(d.DeserializeXdto(xdtoObject)); } } if (xdtoType is XdtoObjectType) { return(xdtoObject as XdtoDataObject); } throw new XdtoException(String.Format("Не поддерживается сериализация для {0}", t)); }
internal XdtoValueType(XmlDataType primitiveType, IXdtoReader reader) { Name = primitiveType.TypeName; NamespaceUri = primitiveType.NamespaceUri; var memberTypes = new List <XdtoValueType> (); var facets = new List <XdtoFacet> (); MemberTypes = new XdtoValueTypeCollection(memberTypes); Facets = new XdtoFacetCollection(facets); ListItemType = new UndefinedOr <XdtoValueType> (null); Reader = reader; }