5

我有一个类节点是这样的:

class Node {
    IEnumerable<Node> inputs;
}

这基本上定义了一个简单的图形。我想将我的图表序列化为人类可读的形式,所以通常我会说 xml 是要走的路。但是 XML 在制作时并没有考虑到循环依赖 :)

那么-对我的图进行序列化的最佳方法是什么?

我可以想到几个方法:

  • 抛弃 XML,创建我自己的格式。
  • 使用 XML,使用唯一 ID 标记每个节点,将连接列表与节点分开存储并在加载后解析

但我认为其他人以前一定遇到过同样的问题,所以可能有一些更好的选择。有谁知道可靠的方法?

4

2 回答 2

3

对于 xml,我会采用 id 方法(更改 DTO 模型使其不是循环的)。

请注意,可以通过在重载构造函数中传入选项来自动DataContractSerializer支持循环对象图;它不会像输出那么简单,但它仍然是可读的。truepreserveObjectReferencesXmlSerializer

于 2010-12-15T11:01:55.237 回答
1

如果切换到 WCF DataContractSerializer,则可以保留对象引用(在 3.5 SP 1 及更高版本中)

[DataContract(IsReference=true)]

索米在这里写得很好

于 2010-12-15T11:04:45.003 回答