【问题标题】:C# : xml serialization of nodes with cyclic linksC#:带有循环链接的节点的 xml 序列化
【发布时间】:2011-05-25 20:20:33
【问题描述】:

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

class Node {
    IEnumerable<Node> inputs;
}

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

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

我能想到几个办法:

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

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

【问题讨论】:

    标签: c# xml serialization hyperlink cyclic-dependency


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      [DataContract(IsReference=true)]
      

      Sowmy 写得很好here

      【讨论】:

        猜你喜欢
        • 2016-08-05
        • 2010-12-28
        • 2016-08-24
        • 2013-08-27
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 2021-09-06
        相关资源
        最近更新 更多