开发中经常遇到需要深拷贝一个对象,再对它做处理。最方便的是通过序列化反序列化方式新创建一个对象。

要支持序列化和反序列化,类必须加特性   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(但没有接口灵活),后面的类只需要继承此基类就可以了。

03-14 07:33