我正在开发一个Windows应用程序工具。该工具允许用户构建数据 我正在寻找一种方法将用户的工作保存到文件中。我听说过XML序列化,但我没有找到以下问题的答案:
假设我有2个列表,并且有两个列表引用的对象(两个列表都指向对象的同一个实例)。如果我遍历两个列表以保存所有对象,那么该对象是仅保存一次,因为它是单个实例,还是会保存两次,因为它是从两个列表中引用的?
此外,在加载文件时,我希望能够知道它是一个单个对象,并且它是从两个列表中引用的(基本上加载了我以前的确切内存映像)。
XML序列化可以在C#中实现吗? 或者,如果有更好的方法,它是什么?
谢谢, 微米。
答案 0 :(得分:1)
XmlSerializer
不会保留对象引用。反序列化后,object.ReferenceEquals
将返回false,在序列化之前它将返回true。
您需要使用的是DataContractSerializer
并设置PreserveObjectReferences
,这将解决您的问题。
或者,如果必须使用XML,则可以自己添加属性并使用deserialize事件重新实例化任何对象引用,但这需要相当多的工作。