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); }
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); }