Можно ли склонировать сложный объект ( в котором есть коллекции, в объектах которых тоже коллекции и т.п. )
Не нагроможндая кучу циклов
Я для всех классов имплементил IClonable, для коллекций делал:
class SomeCollection: CollectionBase
{
#region ICloneable Members
public object Clone()
{
return InnerList.Clone();
}
#endregion
}
Но когда я хочу сделать копию этой коллекции SomeCollection sm = ( SomeCollection ) coll.Clone(); то получаю эксепшен приведения типов. Вроде понятно почему. Просто не охото писать эти циклы копирования для всех коллекций.
Здравствуйте, Chardex, Вы писали:
C>Можно ли склонировать сложный объект ( в котором есть коллекции, в объектах которых тоже коллекции и т.п. )
C>Не нагроможндая кучу циклов
C>Я для всех классов имплементил IClonable, для коллекций делал:
C>C>class SomeCollection: CollectionBase
C>{
C> #region ICloneable Members
C> public object Clone()
C> {
SomeCollection clone = new SomeCollection();
clone.InnerList.AddRange(InnerList);
return clone
C> }
C> #endregion
C>}
C>
C>Но когда я хочу сделать копию этой коллекции SomeCollection sm = ( SomeCollection ) coll.Clone(); то получаю эксепшен приведения типов. Вроде понятно почему. Просто не охото писать эти циклы копирования для всех коллекций.
Здравствуйте, _FRED_, Вы писали:
C>>C>>class SomeCollection: CollectionBase
C>>{
C>> #region ICloneable Members
C>> public object Clone()
C>> {
_FR> SomeCollection clone = new SomeCollection();
_FR> clone.InnerList.AddRange(InnerList);
_FR> return clone
C>> }
C>> #endregion
C>>}
C>>
Какое же это глубокое клонирование? Все элементы у обоих коллекций будут идентичными. Тут нужно выикл делать и для каждого элемента тоже Clone() вызывать.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Здравствуйте, Chardex, Вы писали:
C>Можно ли склонировать сложный объект ( в котором есть коллекции, в объектах которых тоже коллекции и т.п. )
C>Не нагроможндая кучу циклов
C>Я для всех классов имплементил IClonable, для коллекций делал:
C>C>class SomeCollection: CollectionBase
C>{
C> #region ICloneable Members
C> public object Clone()
C> {
C> return InnerList.Clone();
C> }
C> #endregion
C>}
C>
C>Но когда я хочу сделать копию этой коллекции SomeCollection sm = ( SomeCollection ) coll.Clone(); то получаю эксепшен приведения типов. Вроде понятно почему. Просто не охото писать эти циклы копирования для всех коллекций.
Если все элементы Serializable, то серилизовать и десирилизовать из потока, будет deep copy.
Hello, !
> Если все элементы Serializable, то серилизовать и десирилизовать из
> потока, будет deep copy.
И deep тормоза заодно...
Posted via RSDN NNTP Server 1.9