【发布时间】:2013-04-09 22:28:23
【问题描述】:
在通过 DataContracts 序列化自定义数据对象并恢复它们时,我遇到了一个奇怪的问题。我有以下出现问题的类:
[DataContract]
public class ProjectManager
{
// list of projects
[DataMember]
public List<Project> ProjectList { get; set; }
// active project
[DataMember]
public Project ActiveProject { get; set; }
// instance variable
[DataMember]
private static ProjectManager instance = null;
ActiveProject 保存对 ProjectList 中一个对象的引用。问题是,在一种情况下,ActiveProject 中保存的引用似乎不等于 ProjectList 中的引用,尽管列表中只有一个。如果我更改我的 ActiveProject,我在 ProjectList 中的对象不会更改。
仅在反序列化数据后才会出现此问题,我不知道如何防止此错误发生。这种行为是否可能,或者我的代码中是否必须存在我尚未找到的交叉引用?
【问题讨论】:
-
你能在
Project上覆盖Equals吗? -
Is this behaviour possible是的,当你反序列化一个对象时,你有一个不同的实例。 -
在反序列化之后,我对
ActiveProject的列表进行了 foreach 检查。它返回一个“真”,所以错误必须在我的代码中的其他任何地方。该死的墓碑...谢谢提示!
标签: c# windows-phone-7 datacontractserializer pass-by-reference