I need to implement C# deep copy constructors with inheritance. What patterns are there to choose fr

Posted by Tony Lambert on Stack Overflow See other posts from Stack Overflow or by Tony Lambert
Published on 2009-10-15T16:16:53Z Indexed on 2010/06/11 17:53 UTC
Read the original article Hit count: 333

Filed under:
|
|
|
|

I wish to implement a deepcopy of my classes hierarchy in C#

public Class ParentObj : ICloneable
{
    protected int   myA;
    public virtual Object Clone ()
        {
             ParentObj newObj = new ParentObj();
             newObj.myA = theObj.MyA;
             return newObj;
        }
}

public Class ChildObj : ParentObj
{
    protected int   myB;
    public override Object Clone ( )
        {
             Parent newObj = this.base.Clone();
             newObj.myB = theObj.MyB;

             return newObj;
        }
}

This will not work as when Cloning the Child only a parent is new-ed. In my code some classes have large hierarchies.

What is the recommended way of doing this? Cloning everything at each level without calling the base class seems wrong? There must be some neat solutions to this problem, what are they?

Can I thank everyone for their answers. It was really interesting to see some of the approaches. I think it would be good if someone gave an example of a reflection answer for completeness. +1 awaiting!

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET