IXmlSerializable Interfejs

Definicja

Zapewnia niestandardowe formatowanie serializacji i deserializacji XML.

C#
public interface IXmlSerializable
Pochodne

Przykłady

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

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

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

Produkt Wersje
.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

Zobacz też