利用序列化和反序列化实现深拷贝
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] 特性
相关文章推荐
- C#对象的浅拷贝,深拷贝及利用序列化等多种方式实现深拷贝
- Java 深拷贝和浅拷贝 利用序列化实现深拷贝
- 利用二进制序列化和反序列化实现 转
- 使用序列化和反序列化实现深拷贝
- Java 深拷贝和浅拷贝 利用序列化实现深拷贝
- C#对象的浅拷贝,深拷贝及利用序列化等多种方式实现深拷贝
- Java利用序列化实现对象的深拷贝
- 用序列化/反序列化实现对象的(深)拷贝
- java提高篇(五)-----使用序列化实现对象的拷贝
- Java对象的序列化和反序列化及其实现和使用
- 利用JavaScriptSerializer类 进行Json对象的序列化和反序列化和过滤
- .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化
- java序列化和反序列化对象到mysql 的实现
- 利用sql语句调用bat(批处理)+ftp实现文件远程拷贝和注入
- C#实现json的序列化和反序列化实例代码
- C#中怎样实现序列化和反序列化
- 今天无意中发现JavaBean类基本都要求实现了Serializable接口,以前只是知道序列化以后,可以通过io流的方式将对象序列化和反序列化,进行存取,但不知道为什么需要序列化,今天总结一下
- javascript实现json的序列化和反序列化功能
- C#实现JSON序列化与反序列化介绍
- java提高篇-----使用序列化实现对象的拷贝