【发布时间】:2012-02-14 15:26:33
【问题描述】:
我在 SO 和其他地方找到了许多解决方案,它们通过序列化/反序列化(进入内存并返回)处理对象的深度克隆。
它要求要克隆的类标有[Serializable]。我碰巧将我的类(大部分)标记为[DataContract],因为我使用DataContractSerializer 序列化为XML。
我只介绍了[Serializable] 属性,因为需要对其中一些类实例进行深度克隆。然而,现在通过 DCS 的序列化/反序列化发生了一些事情,因为它不再工作 - 关于在反序列化时期望不同的 XML 元素的错误。如果我删除[Serializable],错误就消失了。
我有哪些选择?我只想尽可能简单地深度克隆我的对象。
【问题讨论】:
-
您可以使用反射,但这也可能会产生轻微的性能开销。
-
这里为什么需要[Serializable]?您可以使用 DCS 进行深度克隆...?只需通过 DCS 将其序列化为 MemoryStream...?
-
是的,我刚刚想出了一些东西,我会发布它
标签: c# xml-serialization clone datacontractserializer