这是一个示例 WriteXml 方法:
void IXmlSerializable.WriteXml(XmlWriter writer)
{
// Simple string value:
writer.WriteAttributeString("Name", this.Name);
// Object without IXmlSerializable implementation:
writer.WriteStartElement("NonCustomObject");
new XmlSerializer(NonCustomObjectType).Serialize(writer, this.NonCustomObject);
writer.WriteEndElement();
// Object with IXmlSerializable implementation:
writer.WriteStartElement("CustomObject");
(this.CustomObject as IXmlSerializable).WriteXml(writer);
writer.WriteEndElement();
}
下面是一个对应的 ReadXml 方法:
void IXmlSerializable.ReadXml(XmlReader reader)
{
// Simple string value
this.Name = reader.GetAttribute("Name");
// Object without IXmlSerializable implementation here:
reader.ReadStartElement();
if (reader.Name == "NonCustomObject")
{
reader.ReadStartElement();
this.NonCustomObject = new XmlSerializer(NonCustomObjectType).Deserialize(reader);
reader.ReadEndElement();
}
// Object with IXmlSerializable implementation here:
reader.ReadStartElement();
if (reader.Name == "CustomObject")
{
(this.CustomObject as IXmlSerializable).ReadXml(reader);
reader.ReadEndElement();
}
}