我在SO处找到了许多解决方案,而且是通过序列化/反序列化(进入内存和后退)来处理对象的深层克隆.
它要求克隆的类标有[Serializable].我碰巧有我的类(其中大部分)标有[DataContract],因为我使用DataContractSerializer序列化为XML.
我只引入了[Serializable]属性,因为需要深度克隆其中一些类实例.但是,现在通过DCS进行序列化/反序列化的事情发生了,因为它不再起作用了 – 关于在反序列化时期望不同的XML元素的错误.如果我删除[Serializable],错误就消失了.
我有什么选择?我只想尽可能简单地深入克隆我的对象.
解决方法
这有效
public static T DeepClone<T>(this T a) { using (MemoryStream stream = new MemoryStream()) { DataContractSerializer dcs = new DataContractSerializer(typeof(T)); dcs.WriteObject(stream,a); stream.Position = 0; return (T)dcs.ReadObject(stream); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。