/// <summary> /// Deserialize the <see cref="SpecObject"/>s contained by the <code>SPEC-OBJECTS</code> element. /// </summary> /// <param name="reader"> /// an instance of <see cref="XmlReader"/> /// </param> private void DeserializeSpectObjects(XmlReader reader) { while (reader.Read()) { if (reader.MoveToContent() == XmlNodeType.Element && reader.LocalName == "SPEC-OBJECT") { using (var subtree = reader.ReadSubtree()) { subtree.MoveToContent(); var specObject = new SpecObject(this); specObject.ReadXml(subtree); } } } }
/// <summary> /// Asynchronously deserialize the <see cref="SpecObject"/>s contained by the <code>SPEC-OBJECTS</code> element. /// </summary> /// <param name="reader"> /// an instance of <see cref="XmlReader"/> /// </param> /// <param name="token"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> private async Task DeserializeSpectObjectsAsync(XmlReader reader, CancellationToken token) { while (await reader.ReadAsync()) { if (token.IsCancellationRequested) { token.ThrowIfCancellationRequested(); } if (await reader.MoveToContentAsync() == XmlNodeType.Element && reader.LocalName == "SPEC-OBJECT") { using (var subtree = reader.ReadSubtree()) { await subtree.MoveToContentAsync(); var specObject = new SpecObject(this, this.loggerFactory); await specObject.ReadXmlAsync(subtree, token); } } } }