Тема время от времени всплывает....
То что они похожи — есть такое...
НО, как сделать на .NET следующее?
Есть класс A, который своим атрибутом ссылается на класс B.
Есть два экземпляра a1 и a2, которые ссылаются на один и тот же экземпляр класса B — b1.
Если просто серилизовать в XML список, состоящий из a1 и а2, то получим внутри тегов два экземпляра b1 — один внутри a1, другой — внутри a2, а при после десериализации вообще получим два объекта....
Например, на JAXB можно было написать аттрибут @XmlIDREF, тогда бы использовалась ссылка....
@XmlIDREF
@XmlAttribute
private B b;
Есть ли что уже готовое, или нужно будет писать кастомную сериализацию, которая будет поддерживать @XmlIDREF в .Net'е?
Здравствуйте, MichaelD, Вы писали:
MD>Тема время от времени всплывает....
MD>То что они похожи — есть такое...
MD>НО, как сделать на .NET следующее?
MD>Есть класс A, который своим атрибутом ссылается на класс B.
MD>Есть два экземпляра a1 и a2, которые ссылаются на один и тот же экземпляр класса B — b1.
MD>Если просто серилизовать в XML список, состоящий из a1 и а2, то получим внутри тегов два экземпляра b1 — один внутри a1, другой — внутри a2, а при после десериализации вообще получим два объекта....
Сделать как советует МСДН:
http://msdn.microsoft.com/ru-ru/library/system.runtime.serialization.serializationinfo.aspx (см. пример).
Лично у меня в проекте мы написали свою собственную (упрощенную и быструю) сериализацию, которая по специальному атрибуту понимает, что этот класс нужно сохранять/читать один раз.