15

So, my entity class (written in C#) follows a parent child model where every child object must have a Parent property in which it keeps reference of its Parent.

This Parent property causes issues in serialization of the Object due to circular references.

I can't remove the reference to parent, neither I can mark it XmlIgnore (since I need to read it back when I deserialize the XML)

Any ideas on this?

Arpit Khandelwal
  • 1,743
  • 3
  • 23
  • 34

2 Answers2

12

XML serialization doesn't support circular references, you need to exclude the parent property from the serialization using the XmlIgnore attribute. See this blog post for a way to maintain the relationship when you deserialize.

Alternatively, you could use DataContractSerializer instead of XmlSerializer. It supports circular references, but doesn't provide much control over the XML schema...

Thomas Levesque
  • 286,951
  • 70
  • 623
  • 758
11

You can either create your own XMLSerializer or use the DataContractSerializer and the [DataContract(IsReference= true)] attribute to tell the serializer to remember the references.

Yuriy Faktorovich
  • 67,283
  • 14
  • 105
  • 142