我需要对我的复杂对象模型执行深度克隆。您认为在 .Net 中实现此目的的最佳方式是什么?
我考虑过序列化/反序列化
无需提及 MemberwiseClone
还不够好。
最佳答案
如果你控制了对象模型,那么你可以写代码来做,但是维护量很大。但是,存在很多问题,这意味着除非您需要绝对最快的性能,否则序列化通常是最易于管理的答案。
这是 BinaryFormatter
可接受的情况之一;通常我不是粉丝(由于版本控制等问题)——但由于序列化数据是立即使用的,所以这不是问题。
如果你想让它快一点(但没有你自己的代码),那么 protobuf-net
可能会有所帮助,但需要更改代码(添加必要的元数据等)。而且它是基于树的(不是基于图的)。
其他序列化器(XmlSerializer
、DataContractSerializer
)也很好,但如果它只是用于克隆,它们可能不会提供太多BinaryFormatter
(也许 XmlSerializer
不需要 [Serializable]
。
真的,这取决于您的具体类(class)和场景。
关于c# - .Net 深度克隆 - 最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251277/