加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 什么是对象图,如何序列化一个

发布时间:2020-12-16 01:55:32 所属栏目:百科 来源:网络整理
导读:我最近一直在读关于序列化。我读过,当我使用XmlSerialization我不能序列化对象图。什么是对象图,为什么我不能序列化它简单? 对象图不是单个对象,而是一组相关对象。举个简单的例子,考虑: public class Node { public string Name {...} public Node Pa
我最近一直在读关于序列化。我读过,当我使用XmlSerialization我不能序列化对象图。什么是对象图,为什么我不能序列化它简单?
对象图不是单个对象,而是一组相关对象。举个简单的例子,考虑:
public class Node {
    public string Name {...}
    public Node Parent {...}
    public List<Node> Children {...}
}

其中每个孩子知道父母(并且父母知道孩子)。

问题是,xml是一个基于对象属性的树…并且它只是走他们 – 即与简单的父/子:

> A(知道B是它的孩子)

> B(知道A是其父代)

将序列化为:

<Node>
  <Name>A</Name>
  <!-- no Parent as A is the top node,so null -->
  <Children>
     <Node>
        <Name>B</Name>
        <Parent>
           <Node>
              <Name>A</Name>
              *** boom ***

你可以看到我们回到了A,所以我们现在在一个无尽的循环。

XmlSerializer可以序列化数据树,但不能完整的图。您可以标记要忽略的属性,例如:

[XmlIgnore]
public Node Parent {...}

现在它会工作,但我们将不得不解决家长后。

相比之下,其他一些序列化程序可以处理图形(DataContractSerializer可以按需)。它通过跟踪一个唯一的键跟踪对象 – 但是输出不是你期望从普通的XML。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读