четверг, 4 февраля 2010 г.

Serialization .net( основные требования)

Всё чаще стал использовать XML не только как хранилище контента, но и для хранения настроек программ.
Сейчас после того, как очередной раз поймал InvalidOperationException при сериализации решил написать для себя список требований к объекту:
1) должен иметь атрибут
[Serializable]
* This source code was highlighted with Source Code Highlighter.
2)Должен иметь конструктор по-умолчанию(без параметров)

Из основного вроде всё, если вспомню чего, потом допишу.

теперь частности:
если необходимо сериализовать класс-наследник, то у базового класса надо с помощью атрибута XmlInclude перечислить ему(базовому) все типы наследников примерно так:
[XmlInclude(typeof(Information)), XmlInclude(typeof(Episode))]
public abstract class Element


* This source code was highlighted with Source Code Highlighter.

очень хорошо сериализуются коллекции, я использую List, но думаю и с другими проблем быть не должно.Вот пример списка, где в качестве типа T - абстрактный класс:
[XmlArrayItem(typeof(Information)), XmlArrayItem(typeof(Episode))]
public List<Element> Actions


* This source code was highlighted with Source Code Highlighter.
Просто указываем с какими элементами может иметь дело List

Комментариев нет: