Я хочу реализовать глубокую копию иерархии классов в С#
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;
}
}
Это не сработает, так как при клонировании ребенка обновляется только родительский. В моем коде некоторые классы имеют большие иерархии.
Каков рекомендуемый способ сделать это? Клонирование всего на каждом уровне без вызова базового класса кажется неправильным? Должны быть какие-то опрятные решения этой проблемы, каковы они?
Могу ли я поблагодарить всех за их ответы. Было действительно интересно увидеть некоторые из подходов. Я думаю, было бы хорошо, если бы кто-нибудь дал пример ответа на размышления для полноты. +1 ждет!