IXmlSerializable Interface
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece formatação personalizada para serialização e desserialização de XML.
public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
- Derivado
Exemplos
O seguinte exemplo de código mostra uma implementação da IXmlSerializable interface que serializa um campo privado.
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);
}
}
Observações
Existem duas razões para implementar esta interface. A primeira é controlar como o seu objeto é serializado ou desserializado pelo XmlSerializer. Por exemplo, pode fragmentar os dados em bytes em vez de armazenar grandes conjuntos de dados, e também evitar a inflação que ocorre quando os dados são codificados usando codificação Base64. Para controlar a serialização, implemente os ReadXml métodos and WriteXml para controlar as XmlReader classes and XmlWriter usadas para ler e escrever o XML. Para um exemplo disto, veja Como: Fragmentar Dados Serializados.
A segunda razão é conseguir controlar o esquema. Para permitir isto, deve aplicar o XmlSchemaProviderAttribute ao tipo serializável e especificar o nome do membro estático que devolve o esquema. Veja o XmlSchemaProviderAttribute para um exemplo.
Uma classe que implementa a interface deve ter um construtor sem parâmetros. Isto é um requisito da XmlSerializer disciplina.
Métodos
| Name | Description |
|---|---|
| GetSchema() |
Este método é reservado e não deve ser utilizado. Ao implementar a interface |
| ReadXml(XmlReader) |
Gera um objeto a partir da sua representação XML. |
| WriteXml(XmlWriter) |
Converte um objeto na sua representação XML. |