Подтвердить что ты не робот

Возможно ли выполнить сериализацию с помощью циркулярных ссылок?

Итак, мой класс сущности (написанный на С#) следует за родительской дочерней моделью, где каждый дочерний объект должен иметь свойство родителя, в котором он сохраняет ссылку на свой родитель.

Это свойство родителя вызывает проблемы при сериализации объекта из-за циклических ссылок.

Я не могу удалить ссылку на родителя, и я не могу пометить ее XmlIgnore (так как мне нужно ее прочитать, когда я десериализую XML)

Любые идеи по этому поводу?

4b9b3361

Ответ 1

Сериализация XML не поддерживает циклические ссылки, вам нужно исключить родительское свойство из сериализации с помощью атрибута XmlIgnore. См. это сообщение в блоге, чтобы поддерживать отношения при десериализации.

В качестве альтернативы вы можете использовать DataContractSerializer вместо XmlSerializer. Он поддерживает циклические ссылки, но не обеспечивает большого контроля над XML-схемой...

Ответ 2

Вы можете либо создать свой собственный XMLSerializer, либо использовать DataContractSerializer и [DataContract( IsReference = true)], чтобы сообщить сериализатору запомнить ссылки.