开发中经常遇到需要深拷贝一个对象,再对它做处理。最方便的是通过序列化反序列化方式新创建一个对象。
要支持序列化和反序列化,类必须加特性 Serializable
可以通过一个接口来实现。代码如下:
namespace Model { //继承此接口,增加拷贝功能 public interface IClone { } //注意要使用此方法复制对象的类必须有 [Serializable] 标记 [Serializable] public static class CloneModel { public static T Clone<T>(this T model) where T : IClone { MemoryStream memoryStream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(memoryStream, model); memoryStream.Position = 0; return (T)formatter.Deserialize(memoryStream); } } }
以后所有的实体类都实现接口IClone就可以,甚至可以做一个基类 BaseModel,后面的类只需要集成此基类就可以了。