IXmlSerializable 接口 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为 XML 序列化和反序列化提供自定义格式。
public interface class IXmlSerializablepublic interface IXmlSerializabletype IXmlSerializable = interfacePublic Interface IXmlSerializable- 派生
示例
以下示例代码演示序列化私有字段的 IXmlSerializable 接口的实现。
using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
public class Person : IXmlSerializable
{
    // Private state
    private string personName;
    // Constructors
    public Person (string name)
    {
        personName = name;
    }
    public Person ()
    {
        personName = null;
    }
    // Xml Serialization Infrastructure
    public void WriteXml (XmlWriter writer)
    {
        writer.WriteString(personName);
    }
    public void ReadXml (XmlReader reader)
    {
        personName = reader.ReadString();
    }
    public XmlSchema GetSchema()
    {
        return(null);
    }
    // Print
    public override string ToString()
    {
        return(personName);
    }
}
注解
实现此接口有两个原因。 第一种是控制 对象的序列化或反序列化 XmlSerializer方式。 例如,可以将数据分块成字节而不是缓冲大型数据集,还可以避免使用 Base64 编码对数据进行编码时发生的膨胀。 若要控制序列化,请实现 ReadXml 和 方法来控制XmlReader用于读取和写入 XML 的 和 XmlWriterWriteXml 类。 有关此示例,请参阅 如何:对序列化的数据进行区块。
第二个原因是能够控制架构。 若要启用此功能,必须将 应用于 XmlSchemaProviderAttribute 可序列化类型,并指定返回架构的静态成员的名称。 有关示例,请参见XmlSchemaProviderAttribute。
实现 接口的类必须具有无参数构造函数。 这是 类的要求 XmlSerializer 。
方法
| GetSchema() | 此方法是保留方法,请不要使用。 在实现  | 
| ReadXml(XmlReader) | 从其 XML 表示形式生成对象。 | 
| WriteXml(XmlWriter) | 将对象转换为其 XML 表示形式。 |