IXmlSerializable Интерфейс

Определение

Предоставляет настраиваемое форматирование для сериализации и десериализации XML.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Производный

Примеры

В следующем примере кода показана реализация IXmlSerializable интерфейса, сериализующего частное поле.

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

Комментарии

Существует две причины реализации этого интерфейса. Первое — управлять сериализацией или десериализацией XmlSerializerобъекта. Например, можно объединить данные в байты вместо буферизации больших наборов данных, а также избежать инфляции, возникающей при кодировании данных с помощью кодировки Base64. Чтобы управлять сериализацией, реализуйте ReadXml методы WriteXml и методы для управления ими XmlReaderXmlWriter , используемых для чтения и записи XML. Пример этого см. в разделе "Практическое руководство. Фрагментированные сериализованные данные".

Вторая причина заключается в том, чтобы управлять схемой. Чтобы включить эту функцию, необходимо применить XmlSchemaProviderAttribute к сериализуемому типу и указать имя статического члена, возвращающего схему. XmlSchemaProviderAttribute См. пример.

Класс, реализующий интерфейс, должен иметь конструктор без параметров. Это требование XmlSerializer класса.

Методы

Имя Описание
GetSchema()

Этот метод зарезервирован и не должен использоваться. При реализации интерфейса IXmlSerializable необходимо вернуть null (Nothing в Visual Basic) из этого метода, а при указании пользовательской схемы применить XmlSchemaProviderAttribute к классу.

ReadXml(XmlReader)

Создает объект из его XML-представления.

WriteXml(XmlWriter)

Преобразует объект в его XML-представление.

Применяется к

См. также раздел