c# - .Net 深度克隆 - 最好的方法是什么?

标签 c# .net clone

我需要对我的复杂对象模型执行深度克隆。您认为在 .Net 中实现此目的的最佳方式是什么?
我考虑过序列化/反序列化
无需提及 MemberwiseClone 还不够好。

最佳答案

如果你控制了对象模型,那么你可以写代码来做,但是维护量很大。但是,存在很多问题,这意味着除非您需要绝对最快的性能,否则序列化通常是最易于管理的答案。

这是 BinaryFormatter 可接受的情况之一;通常我不是粉丝(由于版本控制等问题)——但由于序列化数据是立即使用的,所以这不是问题。

如果你想让它快一点(但没有你自己的代码),那么 protobuf-net 可能会有所帮助,但需要更改代码(添加必要的元数据等)。而且它是基于树的(不是基于图的)。

其他序列化器(XmlSerializerDataContractSerializer)也很好,但如果它只是用于克隆,它们可能不会提供太多BinaryFormatter(也许 XmlSerializer 不需要 [Serializable]

真的,这取决于您的具体类(class)和场景。

关于c# - .Net 深度克隆 - 最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251277/

相关文章:

c# - 为什么我无法使用 HIDSharp 连接到 USB 复合设备?

php - Laravel Eloquent ORM 复制

javascript - 在包含 dom 的弹出窗口中克隆页面

c# - 在 PictureBox 中仅使用部分图像

c# - Convert.ToDateTime() 的意外行为

c# - 从图像源获取流

c# - GC、Finalize() 和 Dispose 之间的关系是什么?

javascript - Fabric.js stage.getActiveObject().clone() 与 fabric.util.object.clone(stage.getActiveObject())

c# - 替换 .net 词典

c# - 你能用复选框识别这个多选下拉菜单吗?