IXmlSerializable Rozhraní

Definice

Poskytuje vlastní formátování pro serializaci a deserializaci XML.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Odvozené

Příklady

Následující příklad kódu ukazuje implementaci IXmlSerializable rozhraní, které serializuje privátní pole.

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);
    }
}

Poznámky

Existují dva důvody implementace tohoto rozhraní. První je řídit, jak je objekt serializován nebo deserializován pomocí XmlSerializer. Můžete například data zakódovat do bajtů místo ukládání velkých datových sad do vyrovnávací paměti a vyhnout se také inflace, ke které dochází, když jsou data kódována pomocí kódování Base64. Chcete-li řídit serializace, implementujte ReadXml a WriteXml metody řízení XmlReader a XmlWriter třídy používané ke čtení a zápisu XML. Příklad najdete v tématu Postupy: Vytvoření bloku serializovaných dat.

Druhým důvodem je schopnost řídit schéma. Chcete-li to povolit, musíte použít XmlSchemaProviderAttribute serializovatelný typ a zadat název statického členu, který vrací schéma. Podívejte se na XmlSchemaProviderAttribute příklad.

Třída, která implementuje rozhraní, musí mít konstruktor bez parametrů. Toto je požadavek třídy XmlSerializer .

Metody

Name Description
GetSchema()

Tato metoda je vyhrazená a neměla by se používat. Při implementaci rozhraní IXmlSerializable byste měli vrátit null (Nothing v Visual Basic) z této metody a místo toho, pokud je vyžadováno zadání vlastního schématu, použijte XmlSchemaProviderAttribute na třídu.

ReadXml(XmlReader)

Vygeneruje objekt z jeho reprezentace XML.

WriteXml(XmlWriter)

Převede objekt na jeho reprezentaci XML.

Platí pro

Viz také