IXmlSerializable Interfejs

Definicja

Zapewnia niestandardowe formatowanie serializacji XML i deserializacji.Provides custom formatting for XML serialization and deserialization.

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

Przykłady

Poniższy przykładowy kod przedstawia implementację IXmlSerializable interfejsu, który serializować pole prywatne.The following example code shows an implementation of the IXmlSerializable interface that serializes a private field.

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::Xml::Serialization;
public ref class Person: public IXmlSerializable
{
private:

   // Private state
   String^ personName;

public:

   // Constructors
   Person( String^ name )
   {
      personName = name;
   }

   Person()
   {
      personName = nullptr;
   }

   // Xml Serialization Infrastructure
   virtual void WriteXml( XmlWriter^ writer )
   {
      writer->WriteString( personName );
   }

   virtual void ReadXml( XmlReader^ reader )
   {
      personName = reader->ReadString();
   }

   virtual XmlSchema^ GetSchema()
   {
      return nullptr;
   }

   // Print
   virtual String^ ToString() override
   {
      return (personName);
   }
};
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, aby zaimplementować ten interfejs.There are two reasons to implement this interface. Pierwszy polega na określeniu, jak obiekt jest serializowany lub deserializowany przez XmlSerializer.The first is to control how your object is serialized or deserialized by the XmlSerializer. 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.For example, you can chunk data into bytes instead of buffering large data sets, and also avoid the inflation that occurs when the data is encoded using Base64 encoding. Aby kontrolować serializację, zaimplementuj ReadXml WriteXml XmlReader metody i, aby kontrolować klasyiużywanedoodczytywaniaipisaniakoduXML.XmlWriterTo control the serialization, implement the ReadXml and WriteXml methods to control the XmlReader and XmlWriter classes used to read and write the XML. Aby zapoznać się z przykładem, zobacz How to: Daneserializowane fragmentu.For an example of this, see How to: Chunk Serialized Data.

Drugim powodem jest możliwość sterowania schematem.The second reason is to be able to control the schema. Aby włączyć tę funkcję, należy zastosować XmlSchemaProviderAttribute do typu możliwego do serializacji i określić nazwę statycznej składowej, która zwraca schemat.To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. Zapoznaj XmlSchemaProviderAttribute się z przykładem.See the XmlSchemaProviderAttribute for an example.

Klasa implementująca interfejs musi mieć konstruktora bez parametrów.A class that implements the interface must have a parameterless constructor. Jest to wymaganie XmlSerializer klasy.This is a requirement of the XmlSerializer class.

Metody

GetSchema()

Ta metoda jest zarezerwowana i nie powinna być używana.This method is reserved and should not be used. Podczas implementowania IXmlSerializable interfejsu należy zwrócić null (Nothing w Visual Basic) z tej metody, a zamiast tego, jeśli określono schemat niestandardowy, należy zastosować XmlSchemaProviderAttribute do klasy.When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the XmlSchemaProviderAttribute to the class.

ReadXml(XmlReader)

Generuje obiekt z reprezentacji XML.Generates an object from its XML representation.

WriteXml(XmlWriter)

Konwertuje obiekt na reprezentację w formacie XML.Converts an object into its XML representation.

Dotyczy

Zobacz też