Используемый классом XmlSerializer метод сериализации
Используемый классом XmlSerializer метод сериализации имеет ряд недостатков. Во-первых, он не является универсальным: сериализуемый им граф объектов не может содержать циклы. Во-вторых, он полагает, что граф объектов является деревом и записывает значение полей объекта на место их ссылки. В результате десериализации создаются столько копий объектов, сколько в соответствующем графе в него входило ребер (рис. 4.3). Поскольку на этапе построения XML-схемы нет никакой информации о каких-либо объектах, а только описания полей и свойств классов, то предполагается, что на каждый объект сериализуемого графа, отличный от его корня, существует единственная ссылка в поле какого-либо другого объекта этого же графа.
Рис. 4.3. Применение XmlSerializer к произвольному графу объектов
Наибольшей трудностью при использовании класса XmlSerializer являются предъявляемые им требования к сериализуемым классам. В .NET Framework 2.0 XmlSerializer позволяет сериализовать публичные классы, имеющие конструктор без параметров типа public и отвечающие одному из следующих требований.
-
Класс реализует интерфейс IXMLSerializable. В этом случае XmlSerializer просто использует при сериализации методы класса GetSchema, ReadXml, WriteXml.
-
Класс реализует интерфейс System.Collections.IEnumerable , но не реализует ICollection и содержит публичный метод Add c единственным параметром, имеющим тип, совпадающий с типом результата свойства IEnumerator.Current метода GetEnumerator сериализуемого объекта. Такой класс сериализуется через вызовы класса IEnumerator, возвращаемого методом GetEnumerator, а его публичные поля и свойства не сериализуются.
-
Класс реализует интерфейс System.Collections.ICollection, но не реализует IEnumerable. Для такого класса осуществляется сериализация только свойства Item и публичных полей, реализующих интерфейс ICollection. Другие публичные поля и свойства не сериализуются.
-
Класс реализует интерфейсы ICollection и IEnumerable, имеет публичное индексированное свойство Item c целым индексом и публичное целое свойство Count.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий