Пример #1
0
        object ReadValueContents(Type knownType)
        {
            Type type;
            var  typeAttrib = CurrentGroup.Attribute("type");

            if (typeAttrib == null)
            {
                type = knownType;
            }
            else if (typeAttrib.Value == "null")
            {
                return(null);
            }
            else
            {
                type = SerializerRegistry.ParseSerializedType(typeAttrib.Value);
            }

            var serializer = SerializerRegistry.GetSerializer(type);

            object value;

            serializer.DeserializeConstructor(out value, _version, this);
            serializer.DeserializeContents(ref value, _version, this);
            serializer.DeserializeBacklinks(ref value, _version, this);
            return(value);
        }
Пример #2
0
        object ReadReferenceContents(Type knownType, bool allowCircularDependencies)
        {
            long id = (long)CurrentGroup.Attribute("ref");

            if (id == 0)
            {
                return(null);
            }

            var info = _rootReferences[id];

            DeserializeConstructor(info);
            DeserializeContents(info, allowCircularDependencies);

            return(info.Value);
        }