利用序列化和反序列化实现深拷贝
Posted lite
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用序列化和反序列化实现深拷贝相关的知识,希望对你有一定的参考价值。
以下都是有缺陷的。
1 private static T BinDeepCopy<T>(T t) 2 { 3 using(var ms = new MemoryStream()) { 4 var bf = new BinaryFormatter(); 5 bf.Serialize(ms,t); 6 ms.Position = 0; 7 return (T)bf.Deserialize(ms); 8 } 9 } 10 11 private static T DomDeepCopy<T>(T t) 12 { 13 using(var ms = new MemoryStream()) { 14 XmlSerializer xml = new XmlSerializer(typeof(T)); 15 xml.Serialize(ms,t); 16 ms.Position = 0; 17 return (T)xml.Deserialize(ms); 18 } 19 } 20 21 private static T SoapDeepCopy<T>(T t) 22 { 23 using(var ms = new MemoryStream()) { 24 var soap = new SoapFormatter(); 25 soap.Serialize(ms,t); 26 ms.Position = 0; 27 return (T)soap.Deserialize(ms); 28 } 29 }
以上是关于利用序列化和反序列化实现深拷贝的主要内容,如果未能解决你的问题,请参考以下文章