mar*_*are 6 c# clone xml-serialization datacontractserializer
我在SO处找到了许多解决方案,而且是通过序列化/反序列化(进入内存和后退)来处理对象的深层克隆.
它要求克隆的类标记为[Serializable].我碰巧把我的类(大部分都是)标记为[DataContract]因为我使用DataContractSerializer序列化为XML.
我只介绍了[Serializable]属性,因为需要对其中一些类实例进行深度克隆.但是,现在通过DCS进行序列化/反序列化的事情发生了,因为它不再起作用了 - 关于在反序列化时期望不同的XML元素的错误.如果我删除了[Serializable]错误消失了.
我有什么选择?我只想尽可能简单地深入克隆我的对象.
mar*_*are 11
这有效
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5686 次 |
| 最近记录: |