C#中的通用深度复制用于用户定义的类

这个问题在这里已经有了答案:

  • 深入克隆对象39个答案

  • 尝试为每个类使用复制构造函数,以克隆所有的字段。 您可能还需要引入一个接口,例如称为IDeepCloneable的接口,该接口强制类实现调用复制构造函数的方法DeepClone() 。 为了克隆类型安全而不需要转换,可以使用自引用结构。

    看看下面的内容:

    interface IDeepCloneable<out T>
    {
        T DeepClone();
    }
    
    class SomeClass<T> : IDeepCloneable<T> where T : SomeClass<T>, new()
    {        
        // copy constructor
        protected SomeClass(SomeClass<T> source)
        {
            // copy members 
            x = source.x;
            y = source.y;
            ...
       }
    
        // implement the interface, subclasses overwrite this method to
        // call 'their' copy-constructor > because the parameter T refers
        // to the class itself, this will get you type-safe cloning when
        // calling 'anInstance.DeepClone()'
        public virtual T DeepClone()
        {
            // call copy constructor
            return new T();
        }
    
        ...
    }
    
    链接地址: http://www.djcxy.com/p/40769.html

    上一篇: Generic Deep Copy in C# for user defined classes

    下一篇: Deep Copy of Complex Third Party Objects/Classes