C#从/向文件保存/加载对象:单个实例

时间:2011-03-12 12:05:10

标签: c# file memory load save

我正在开发一个Windows应用程序工具。该工具允许用户构建数据 我正在寻找一种方法将用户的工作保存到文件中。我听说过XML序列化,但我没有找到以下问题的答案:

假设我有2个列表,并且有两个列表引用的对象(两个列表都指向对象的同一个实例)。如果我遍历两个列表以保存所有对象,那么该对象是仅保存一次,因为它是单个实例,还是会保存两次,因为它是从两个列表中引用的?

此外,在加载文件时,我希望能够知道它是一个单个对象,并且它是从两个列表中引用的(基本上加载了我以前的确切内存映像)。

XML序列化可以在C#中实现吗? 或者,如果有更好的方法,它是什么?

谢谢, 微米。

1 个答案:

答案 0 :(得分:1)

XmlSerializer不会保留对象引用。反序列化后,object.ReferenceEquals将返回false,在序列化之前它将返回true。

您需要使用的是DataContractSerializer并设置PreserveObjectReferences,这将解决您的问题。

或者,如果必须使用XML,则可以自己添加属性并使用deserialize事件重新实例化任何对象引用,但这需要相当多的工作。