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