IXmlSerializable Gränssnitt

Definition

Tillhandahåller anpassad formatering för XML-serialisering och deserialisering.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Härledda

Exempel

Följande exempelkod visar en implementering av gränssnittet IXmlSerializable som serialiserar ett privat fält.

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

Kommentarer

Det finns två orsaker till att implementera det här gränssnittet. Den första är att styra hur objektet serialiseras eller deserialiseras av XmlSerializer. Du kan till exempel segmentera data i byte i stället för att buffras stora datamängder och även undvika den inflation som uppstår när data kodas med Hjälp av Base64-kodning. Om du vill kontrollera serialiseringen implementerar ReadXml du metoderna och WriteXml för att kontrollera de XmlReader klasser och XmlWriter klasser som används för att läsa och skriva XML-koden. Ett exempel på detta finns i How to: Chunk Serialized Data (Så här gör du: Segment serialiserade data).

Den andra orsaken är att kunna styra schemat. Om du vill aktivera detta måste du tillämpa på XmlSchemaProviderAttribute den serialiserbara typen och ange namnet på den statiska medlem som returnerar schemat. XmlSchemaProviderAttribute Se ett exempel.

En klass som implementerar gränssnittet måste ha en parameterlös konstruktor. Detta är ett krav för XmlSerializer klassen.

Metoder

Name Description
GetSchema()

Den här metoden är reserverad och bör inte användas. När du implementerar gränssnittet IXmlSerializable bör du returnera null (Nothing i Visual Basic) från den här metoden och i stället tillämpa XmlSchemaProviderAttribute på klassen om du anger ett anpassat schema.

ReadXml(XmlReader)

Genererar ett objekt från dess XML-representation.

WriteXml(XmlWriter)

Konverterar ett objekt till dess XML-representation.

Gäller för

Se även