C#使用BinaryFormatter深度复制树结构 编辑1
肯特减轻了我的恐惧。然而,我发现了一个例外。我为Node类编写了一个方法,该方法将遍历层次结构,直到到达根节点并返回其哈希代码。除了一个单独的对象外,散列代码在整个行中都是相同的。一句话,愤怒C#使用BinaryFormatter深度复制树结构 编辑1,c#,tree,reference,hierarchical-data,deep-copy,C#,Tree,Reference,Hierarchical Data,Deep Copy,肯特减轻了我的恐惧。然而,我发现了一个例外。我为Node类编写了一个方法,该方法将遍历层次结构,直到到达根节点并返回其哈希代码。除了一个单独的对象外,散列代码在整个行中都是相同的。一句话,愤怒 我在写我的第一个(相对)大型C#应用程序的末尾。然而,我想我发现了一个我搞砸了的大错误 我的应用程序解析一个XML文件并创建一个对象层次结构,每个对象继承自一个节点类,包含子对象列表和一个节点父引用 我需要能够复制这个结构。概念是初始结构保存默认数据,您可以获得自己的副本并在使用时对其进行修改。因此,我
我在写我的第一个(相对)大型C#应用程序的末尾。然而,我想我发现了一个我搞砸了的大错误 我的应用程序解析一个XML文件并创建一个对象层次结构,每个对象继承自一个节点类,包含子对象列表和一个节点父引用 我需要能够复制这个结构。概念是初始结构保存默认数据,您可以获得自己的副本并在使用时对其进行修改。因此,我使用了一种通用的DeepClone
免责声明:当我完成这项工作时,我意识到我犯下的所有设计错误以及如何避免这些错误,包括这一次。为我辩护,这学期在大学将是我第一次参加数据结构课程我完全希望我未能实现的树的某些关键部分能够帮助解决这个问题。>_ 否。序列化过程记录对象之间的引用,反序列化过程恢复这些关系 编辑:除非我误解了你的问题——你的意思还不太清楚。一旦客户机代码对克隆的结构进行了更改,您就可以将这些更改合并到主数据结构中,如果您想这样做的话
你可能想看看处理这类事情的更正式的方法。在编辑之前,您可以继续使用序列化作为克隆对象的手段,但您的界面将更加标准化。听起来您理解我的问题。这是一个巨大的安慰。谢谢你,肯特!感谢您对IEditableObject的引用。在.NET中,数据源对我来说仍然是一个未知领域,这将给我充分的理由去了解它