Udostępnij za pośrednictwem


IXmlSerializable Interfejs

Definicja

Zapewnia niestandardowe formatowanie serializacji i deserializacji XML.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Pochodne

Przykłady

Poniższy przykładowy kod przedstawia implementację interfejsu IXmlSerializable , który serializuje pole prywatne.

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

Uwagi

Istnieją dwa powody, dla których należy zaimplementować ten interfejs. Pierwszą z nich jest kontrolowanie sposobu serializacji lub deserializacji obiektu przez XmlSerializerobiekt . Można na przykład podzielić dane na bajty zamiast buforować duże zestawy danych, a także uniknąć inflacji, która występuje, gdy dane są kodowane przy użyciu kodowania Base64. Aby kontrolować serializacji, zaimplementuj ReadXml metody i WriteXml do kontrolowania XmlReader klas i XmlWriter używanych do odczytywania i zapisywania kodu XML. Aby zapoznać się z tym przykładem, zobacz How to: Chunk Serialized Data (Instrukcje: fragment serializowane dane).

Drugim powodem jest możliwość kontrolowania schematu. Aby to włączyć, należy zastosować parametr XmlSchemaProviderAttribute do typu możliwego do serializacji i określić nazwę statycznego elementu członkowskiego zwracającego schemat. XmlSchemaProviderAttribute Zobacz przykład.

Klasa, która implementuje interfejs, musi mieć konstruktor bez parametrów. Jest to wymaganie XmlSerializer klasy.

Metody

GetSchema()

Ta metoda jest zarezerwowana i nie powinna być używana. Podczas implementowania interfejsu IXmlSerializable należy zwrócić (nullNothingw Visual Basic) z tej metody, a zamiast tego, jeśli określenie schematu niestandardowego jest wymagane, zastosuj element XmlSchemaProviderAttribute do klasy.

ReadXml(XmlReader)

Generuje obiekt na podstawie reprezentacji XML.

WriteXml(XmlWriter)

Konwertuje obiekt na reprezentację XML.

Dotyczy

Zobacz też