Condividi tramite


IXmlSerializable Interfaccia

Definizione

Fornisce la formattazione personalizzata per la serializzazione e deserializzazione XML.

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

Esempio

Il codice di esempio seguente mostra un'implementazione dell'interfaccia IXmlSerializable che serializza un campo privato.

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

Commenti

Esistono due motivi per implementare questa interfaccia. Il primo consiste nel controllare il modo in cui l'oggetto XmlSerializerviene serializzato o deserializzato da . Ad esempio, è possibile blocchi di dati in byte anziché buffering di set di dati di grandi dimensioni ed evitare anche l'inflazione che si verifica quando i dati vengono codificati usando la codifica Base64. Per controllare la serializzazione, implementare i ReadXml metodi e per controllare le XmlReader classi e WriteXmlXmlWriter usate per leggere e scrivere il codice XML. Per un esempio di questo, vedere Procedura: Blocchi di dati serializzati.

Il secondo motivo consiste nel controllare lo schema. Per abilitare questa operazione, è necessario applicare l'oggetto XmlSchemaProviderAttribute al tipo serializzabile e specificare il nome del membro statico che restituisce lo schema. Per un esempio, vedere XmlSchemaProviderAttribute.

Una classe che implementa l'interfaccia deve avere un costruttore senza parametri. Si tratta di un requisito della XmlSerializer classe.

Metodi

GetSchema()

Il metodo è riservato e non deve essere utilizzato. Quando si implementa l'interfaccia IXmlSerializable, è necessario restituire null (Nothing in Visual Basic) da questo metodo. Se è invece necessario specificare uno schema personalizzato applicare XmlSchemaProviderAttribute alla classe.

ReadXml(XmlReader)

Genera un oggetto dalla relativa rappresentazione XML.

WriteXml(XmlWriter)

Converte un oggetto nella relativa rappresentazione XML.

Si applica a

Vedi anche