/// <summary> /// Deserializes an object from the specified <see cref="EventReader" /> with an expected specific type. /// </summary> /// <param name="reader">The reader.</param> /// <param name="expectedType">The expected type.</param> /// <returns>A deserialized object.</returns> /// <exception cref="System.ArgumentNullException">reader</exception> public object Deserialize(EventReader reader, Type expectedType) { if (reader == null) { throw new ArgumentNullException("reader"); } var hasStreamStart = reader.Allow <StreamStart>() != null; var hasDocumentStart = reader.Allow <DocumentStart>() != null; object result = null; if (!reader.Accept <DocumentEnd>() && !reader.Accept <StreamEnd>()) { var context = new SerializerContext(this) { Reader = reader }; result = context.ReadYaml(null, expectedType); } if (hasDocumentStart) { reader.Expect <DocumentEnd>(); } if (hasStreamStart) { reader.Expect <StreamEnd>(); } return(result); }
/// <summary> /// Deserializes an object from the specified <see cref="EventReader" /> with an expected specific type. /// </summary> /// <param name="reader">The reader.</param> /// <param name="expectedType">The expected type, maybe null.</param> /// <param name="existingObject">An existing object, may be null.</param> /// <param name="contextSettings">The context settings.</param> /// <param name="context">The context used to deserialize the object.</param> /// <returns>A deserialized object.</returns> /// <exception cref="System.ArgumentNullException">reader</exception> public object Deserialize(EventReader reader, Type expectedType, object existingObject, SerializerContextSettings contextSettings, out SerializerContext context) { if (reader == null) { throw new ArgumentNullException("reader"); } var hasStreamStart = reader.Allow <StreamStart>() != null; var hasDocumentStart = reader.Allow <DocumentStart>() != null; context = null; object result = null; if (!reader.Accept <DocumentEnd>() && !reader.Accept <StreamEnd>()) { context = new SerializerContext(this, contextSettings) { Reader = reader, AllowErrors = this.settings.AllowErrors, InitialInstance = existingObject }; result = context.ReadYaml(existingObject, expectedType); } if (hasDocumentStart) { reader.Expect <DocumentEnd>(); } if (hasStreamStart) { reader.Expect <StreamEnd>(); } return(result); }