我有一个像这样的节点类:
class Node {
IEnumerable<Node> inputs;
}
它基本上定义了一个简单的图形。 我想将我的图形序列化为人类可读的形式,所以通常我会说 xml 是可行的方法。 但是 XML 并没有考虑到循环依赖性:)
那么 - 序列化图表的最佳方式是什么?
我可以想到几种方法:
- 放弃 XML,创建我自己的格式。
- 使用 XML,用唯一 ID 标记每个节点,将连接列表与节点分开存储并在加载后解析
但我认为其他人以前一定也遇到过同样的问题,所以可能会有一些更好的选择。 有谁知道可靠的方法吗?
最佳答案
对于 xml,我会采用 id 方法(更改 DTO 模型,使其不是循环的)。
请注意 DataContractSerializer
可以通过为重载构造函数中的 preserveObjectReferences
选项传入 true
来自动支持循环对象图;它不会像 XmlSerializer
输出那么简单,但它仍然是可读的。
关于C# : xml serialization of nodes with cyclic links,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449103/