IXmlSerializable Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
ReadXml(XmlReader) |
Genera un oggetto dalla relativa rappresentazione XML. |
WriteXml(XmlWriter) |
Converte un oggetto nella relativa rappresentazione XML. |