IXmlSerializable 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供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 編碼時資料膨脹的情況。 為了控制序列化,實作 ReadXml 和 WriteXml 方法來控制XmlReaderXmlWriter用於讀寫 XML 的類別。 關於此點的範例,請參見 如何:區塊序列化資料。
第二個原因是能夠控制 schema。 要啟用此功能,您必須將 套 XmlSchemaProviderAttribute 用到 序列化型別,並指定回傳 schema 的靜態成員名稱。 請參考相關 XmlSchemaProviderAttribute 範例。
實作該介面的類別必須擁有無參數建構子。 這是這 XmlSerializer 門課的必修課。
方法
| 名稱 | Description |
|---|---|
| GetSchema() |
此方法為保留,不應使用。 實作 |
| ReadXml(XmlReader) |
從其 XML 表示產生物件。 |
| WriteXml(XmlWriter) |
將物件轉換為其 XML 表示。 |