private ClassDataNode ReadUnknownClassData(XmlReaderDelegator xmlReader, string?dataContractName, string?dataContractNamespace) { var dataNode = new ClassDataNode(); InitializeExtensionDataNode(dataNode, dataContractName, dataContractNamespace); int memberIndex = 0; XmlNodeType nodeType; while ((nodeType = xmlReader.MoveToContent()) != XmlNodeType.EndElement) { if (nodeType != XmlNodeType.Element) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateUnexpectedStateException(XmlNodeType.Element, xmlReader)); } if (dataNode.Members == null) { dataNode.Members = new List <ExtensionDataMember>(); } dataNode.Members.Add(ReadExtensionDataMember(xmlReader, memberIndex++)); } xmlReader.ReadEndElement(); return(dataNode); }
private void WriteExtensionClassData(XmlWriterDelegator xmlWriter, ClassDataNode dataNode) { if (!this.TryWriteDeserializedExtensionData(xmlWriter, dataNode)) { this.WriteExtensionDataTypeInfo(xmlWriter, dataNode); IList <ExtensionDataMember> members = dataNode.Members; if (members != null) { for (int i = 0; i < members.Count; i++) { this.WriteExtensionDataMember(xmlWriter, members[i]); } } } }
private void MoveNextInClass(ClassDataNode dataNode) { if ((dataNode.Members != null) && (this.element.childElementIndex < dataNode.Members.Count)) { if (this.element.childElementIndex == 0) { this.context.IncrementItemCount(-dataNode.Members.Count); } ExtensionDataMember member = dataNode.Members[this.element.childElementIndex++]; this.SetNextElement(member.Value, member.Name, member.Namespace, GetPrefix(member.Namespace)); } else { this.internalNodeType = ExtensionDataNodeType.EndElement; this.element.childElementIndex = 0; } }