您的位置:首页 > 其它

利用序列化和反序列化实现深拷贝

2018-01-30 16:31 330 查看
private static T BinDeepCopy<T>(T t)
{
using(var ms = new MemoryStream()) {
var bf = new BinaryFormatter();
bf.Serialize(ms,t);
ms.Position = 0;
return (T)bf.Deserialize(ms);
}
}

private static T DomDeepCopy<T>(T t)
{
using(var ms = new MemoryStream()) {
XmlSerializer xml = new XmlSerializer(typeof(T));
xml.Serialize(ms,t);
ms.Position = 0;
return (T)xml.Deserialize(ms);
}
}
private static T SoapDeepCopy<T>(T t)
{
using(var ms = new MemoryStream()) {
var soap = new SoapFormatter();
soap.Serialize(ms,t);
ms.Position = 0;
return (T)soap.Deserialize(ms);
}
}
 各有缺陷,建议使用 BinDeepCopy,但要使用 [Serializable] 特性

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: