Re[2]: Копиклонирование (клоникопирование?)
От: Артем1 Россия  
Дата: 04.02.11 21:25
Оценка:
Здравствуйте, dfbag7, Вы писали:

D>Здравствуйте, Артем1, Вы писали:


А>>Посоветуйте, как бы вы решали такую проблему.


D>Если можно копировать только общие данные для всех предков, то и включать эту функциональность имхо нужно в базовый класс.

D>Тогда производные классы могут ничего не знать друг о друге.

Ну да, у меня тоже такое CopyTo получилось. Только виртуальное с перегрузкой в наследниках, где они кастят передаваемый объект к себе и если смогли прикастить, копируют свои данные. Ну и вызов базового метода. Только плохо получается, что все реализуют интерфейс IClonable<Конкретный класс> и перегружают метод интерфейса ICopyTo<СамыйБазовыйИзИерархии> .

D>Но у меня есть ощущение, что рано или поздно вам все равно придется преобразовывать CostInfo в OtherCostInfo и обратно, и этот путь — неправильный. Особенно печально все станет, если родственников CostInfo много, и наследники добавляют в базовый класс различные данные.


Эта печаль уже присутствует. Пока решается постобработкой, так как внешний по отношению к копированию функционал.

D>[skipped]

D>Поскольку деталей про SomeCostHolder нет, то и посоветовать что-либо трудно.

Другой SomeCostHolder — это имелся в виду другой инстанс того же класса. Там верхнеуровневый контейнер другой.

D>Как вариант: можно выделить код, из-за которого "другой SomeCostHolder" не может обрабатывать CostInfo, в отдельный класс...[skipped]


Да, так и сделано. Только вот сама структура DM кривая получилась, поэтому такие вопросы и поднимаются. Думаю о замене наследования композицией, но пока не додумал еще

Раз у по крайне мере двух человек мысли по решению совпали, значит у меня получилось не совсем безнадежно, спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.