Sdílet prostřednictvím


IXmlSerializable Rozhraní

Definice

Poskytuje vlastní formátování pro serializaci XML a deserializaci.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Odvozené

Příklady

Následující příklad kódu ukazuje implementaci IXmlSerializable rozhraní, která serializuje privátní pole.

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

Poznámky

Existují dva důvody pro implementaci tohoto rozhraní. První je řídit, jak je objekt serializován nebo deserializován pomocí XmlSerializer. Můžete například ukládat data do bajtů místo ukládání velkých datových sad do vyrovnávací paměti a také se vyhnout inflace, ke které dochází při kódování dat pomocí kódování Base64. Chcete-li řídit serializaci, implementujte ReadXml metody a WriteXml pro řízení XmlReader tříd a XmlWriter používaných ke čtení a zápisu XML. Příklad tohoto postupu najdete v tématu Postupy: Vytváření bloků serializovaných dat.

Druhým důvodem je schopnost řídit schéma. Chcete-li to povolit, musíte použít XmlSchemaProviderAttribute na serializovatelný typ a zadat název statického člena, který vrací schéma. Příklad najdete v XmlSchemaProviderAttribute tomto příkladu.

Třída, která implementuje rozhraní, musí mít konstruktor bez parametrů. To je požadavek XmlSerializer třídy.

Metody

GetSchema()

Tato metoda je vyhrazena a neměla by se používat. Při implementaci IXmlSerializable rozhraní byste měli vrátit null (Nothing v jazyce Visual Basic) z této metody a místo toho, pokud je požadováno zadání vlastního schématu XmlSchemaProviderAttribute , použít na třídu .

ReadXml(XmlReader)

Vygeneruje objekt ze své reprezentace XML.

WriteXml(XmlWriter)

Převede objekt na jeho reprezentaci XML.

Platí pro

Viz také