IXmlSerializable 介面

定義

為 XML 序列化和還原序列化提供自訂格式。

C#
public interface IXmlSerializable
衍生

範例

下列範例程式代碼示範串行化私用欄位之介面的實 IXmlSerializable 作。

C#
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 作 和 WriteXml 方法來控制 XmlReader 用來讀取和寫入 XML 的 和 XmlWriter 類別。 如需此範例,請參閱 如何:區塊串行化數據

第二個原因是能夠控制架構。 若要啟用此功能,您必須將 套用 XmlSchemaProviderAttribute 至可串行化的型別,並指定傳回架構的靜態成員名稱。 如需範例,請參閱 XmlSchemaProviderAttribute

實作 介面的類別必須具有無參數建構函式。 這是類別的需求 XmlSerializer

方法

GetSchema()

這個方法已保留且不應使用。 實作 IXmlSerializable 介面時,您應該要從這個方法傳回 null (在 Visual Basic 中為 Nothing);相對地,在需要指定自訂結構描述時,將 XmlSchemaProviderAttribute 套用至該類別。

ReadXml(XmlReader)

從物件的 XML 表示產生該物件。

WriteXml(XmlWriter)

將物件轉換為其 XML 表示。

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

另請參閱