saber - C#: xml serialización de nodos con enlaces cíclicos
saber si existe nodo xml c# (2)
Tengo un nodo de clase algo como esto:
class Node {
IEnumerable<Node> inputs;
}
Que básicamente define un gráfico simple. Quiero serializar mi gráfico a una forma legible por humanos, por lo que normalmente diría que xml sería el camino a seguir. Pero XML no se hizo con las dependencias cíclicas en mente :)
Entonces, ¿cuál sería la mejor manera de ir para la serialización de mi gráfico?
Puedo pensar en algunas maneras:
- zanja XML, crea mi propio formato.
- use XML, etiquete cada nodo con una ID única, almacene las listas de conexiones separadas de los Nodos y resuelva después de la carga
Pero creo que otras personas deben haber tenido este mismo problema antes, por lo que podría haber algunas mejores opciones. ¿Alguien sabe de un enfoque sólido?
Para xml, iría con el enfoque id (cambiando el modelo DTO de manera que no sea cíclico).
Tenga en cuenta que DataContractSerializer
puede admitir gráficos de objetos cíclicos de forma automática al pasar true
para la opción preserveObjectReferences
en los constructores sobrecargados; no será tan simple como la salida de XmlSerializer
, pero seguirá siendo legible.
Si cambia a WCF DataContractSerializer, puede conservar las Referencias de objeto (en 3.5 SP 1 y posterior)
[DataContract(IsReference=true)]
Sowmy tiene una buena redacción aquí