2011-02-15 23 views
12

Por lo tanto, mi clase de entidad (escrita en C#) sigue un modelo hijo principal donde cada objeto hijo debe tener una propiedad Parent en la que guarde referencia de su Parent.¿Es posible realizar la serialización con referencias circulares?

Esta propiedad principal causa problemas en la serialización del objeto debido a referencias circulares.

no puede eliminar la referencia a los padres, ni puedo marcarlo XmlIgnore (ya que tengo que leer de nuevo cuando deserializar el XML)

¿Alguna idea sobre esto?

Respuesta

11

La serialización XML no admite referencias circulares, debe excluir la propiedad principal de la serialización mediante el atributo XmlIgnore. Vea this blog post para una forma de mantener la relación cuando se deserializa.

Como alternativa, puede usar DataContractSerializer en lugar de XmlSerializer. Es compatible con referencias circulares, pero no proporciona mucho control sobre el esquema XML ...

+0

buena publicación en el blog. probando tu ejemplo –

+0

¡Gracias a Thomos, su solución fue el salvavidas! –

11

Puede crear su propio XMLSerializer o utilizar el DataContractSerializer y el atributo [DataContract(IsReference= true)] para decirle al serializador recordar las referencias.

+1

Gracias por responder, cualquier ejemplo con un fragmento de código agregará más ayuda. :) –

Cuestiones relacionadas