IXmlSerializable Gränssnitt
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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 |
| ReadXml(XmlReader) |
Genererar ett objekt från dess XML-representation. |
| WriteXml(XmlWriter) |
Konverterar ett objekt till dess XML-representation. |