// Переопределив данный метод, данный код будет срабатывать при вызове Clone() protected override void HandleCloned(CloneableBase baseClone) { // Выполняем операции из базового класса base.HandleCloned(baseClone); // Приводим клона к текущему типу CloneablePrototypeAdvanced clone = (CloneablePrototypeAdvanced)baseClone; // Дополнительная логика. Здесь, например, происходит копирование ссылочной // сущности clone.Dependency = new Dependency(this.Dependency.Text); }
// Дополнительный метод, предназначенный для расширения логики клонирования protected virtual void HandleCloned(CloneableBase clone) { // Возможно в абстрактном классе ничего делать не нужно, а вот в дочерних // классах пригодится для обработки, например, ссылочных типов. // Посколько класс виртуальный, то его реализация необязательна. }