internal override object InternalReadObject(XmlReaderDelegator xmlReader, bool verifyObjectName) { if (MaxItemsInObjectGraph == 0) { throw XmlObjectSerializer.CreateSerializationException(SR.Format(SR.ExceededMaxItemsQuota, MaxItemsInObjectGraph)); } if (verifyObjectName) { if (!InternalIsStartObject(xmlReader)) { throw XmlObjectSerializer.CreateSerializationExceptionWithReaderDetails(SR.Format(SR.ExpectingElement, XmlDictionaryString.Empty, RootName), xmlReader); } } else if (!IsStartElement(xmlReader)) { throw XmlObjectSerializer.CreateSerializationExceptionWithReaderDetails(SR.Format(SR.ExpectingElementAtDeserialize, XmlNodeType.Element), xmlReader); } DataContract contract = RootContract; if (contract.IsPrimitive && object.ReferenceEquals(contract.UnderlyingType, _rootType))// handle Nullable<T> differently { return(DataContractJsonSerializerImpl.ReadJsonValue(contract, xmlReader, null)); } XmlObjectSerializerReadContextComplexJson context = XmlObjectSerializerReadContextComplexJson.CreateContext(this, contract); return(context.InternalDeserialize(xmlReader, _rootType, contract, null, null)); }
internal override object InternalReadObject(XmlReaderDelegator xmlReader, bool verifyObjectName) { if (this.MaxItemsInObjectGraph == 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.Runtime.Serialization.SR.GetString("ExceededMaxItemsQuota", new object[] { this.MaxItemsInObjectGraph }))); } if (verifyObjectName) { if (!this.InternalIsStartObject(xmlReader)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationExceptionWithReaderDetails(System.Runtime.Serialization.SR.GetString("ExpectingElement", new object[] { XmlDictionaryString.Empty, this.RootName }), xmlReader)); } } else if (!base.IsStartElement(xmlReader)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationExceptionWithReaderDetails(System.Runtime.Serialization.SR.GetString("ExpectingElementAtDeserialize", new object[] { XmlNodeType.Element }), xmlReader)); } DataContract rootContract = this.RootContract; if (rootContract.IsPrimitive && object.ReferenceEquals(rootContract.UnderlyingType, this.rootType)) { return(ReadJsonValue(rootContract, xmlReader, null)); } return(XmlObjectSerializerReadContextComplexJson.CreateContext(this, rootContract).InternalDeserialize(xmlReader, this.rootType, rootContract, null, null)); }