IXmlSerializable 介面

定義

提供XML序列化與反序列化的自訂格式。

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public 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 編碼時資料膨脹的情況。 為了控制序列化,實作 ReadXmlWriteXml 方法來控制XmlReaderXmlWriter用於讀寫 XML 的類別。 關於此點的範例,請參見 如何:區塊序列化資料

第二個原因是能夠控制 schema。 要啟用此功能,您必須將 套 XmlSchemaProviderAttribute 用到 序列化型別,並指定回傳 schema 的靜態成員名稱。 請參考相關 XmlSchemaProviderAttribute 範例。

實作該介面的類別必須擁有無參數建構子。 這是這 XmlSerializer 門課的必修課。

方法

名稱 Description
GetSchema()

此方法為保留,不應使用。 實作 IXmlSerializable 介面時,應回傳此方法的 null(Visual BasicNothing),若需指定自訂結構,則將 XmlSchemaProviderAttribute 套用到類別。

ReadXml(XmlReader)

從其 XML 表示產生物件。

WriteXml(XmlWriter)

將物件轉換為其 XML 表示。

適用於

另請參閱