Пример #1
0
 public void RegisterXdtoDeserializer(XmlDataType type, IXdtoDeserializer processor)
 {
     if (processor is IXdtoDeserializer)
     {
         deserializers [type] = processor as IXdtoDeserializer;
     }
 }
Пример #2
0
        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));
        }
Пример #3
0
        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;
        }