В итоге:
1. При нажатии на Ок, свойства class1 остаются неизменными
2. Почему то при редактировании клона приходят события тому объекту, который подписан на class1.PropertyChanged
Здравствуйте, Аноним, Вы писали:
А>2. Почему то при редактировании клона приходят события тому объекту, который подписан на class1.PropertyChanged А>Что я делаю не так?
Не показываете, как реализованы события и клонирование.
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Клонирование и события
От:
Аноним
Дата:
25.06.10 08:34
Оценка:
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, Аноним, Вы писали:
А>>2. Почему то при редактировании клона приходят события тому объекту, который подписан на class1.PropertyChanged А>>Что я делаю не так?
_FR>Не показываете, как реализованы события и клонирование.
Есть некий класс-слушатель, у которого есть несколько объектов для прослушивания:
BaseClass baseClass
{
SomeClass class1;
public baseClass()
{
class1 = new SomeClass();
class1.PropertyChanged+=.........
}
}
А клонирование у SomeClass реализовано так:
#region ICloneable Members
public object Clone()
{
return this.MemberwiseClone();
}
#endregion
Здравствуйте, Аноним, Вы писали:
А>1. При нажатии на Ок, свойства class1 остаются неизменными А>2. Почему то при редактировании клона приходят события тому объекту, который подписан на class1.PropertyChanged
А>Что я делаю не так?
У клонированного объекта надо очистить список подписчиков. В оптимистичном варианте надо у клонированного объекта вызвать Events.Dispose()
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, _FRED_, Вы писали:
_FR>>Здравствуйте, Аноним, Вы писали:
А>>>2. Почему то при редактировании клона приходят события тому объекту, который подписан на class1.PropertyChanged А>>>Что я делаю не так?
Здравствуйте, Аноним, Вы писали:
А>>>2. Почему то при редактировании клона приходят события тому объекту, который подписан на class1.PropertyChanged А>>>Что я делаю не так? _FR>>Не показываете, как реализованы события и клонирование. А>Есть некий класс-слушатель, у которого есть несколько объектов для прослушивания:
Вы в курсе, что это не глубое клонирование? Например, если в SomeClass есть поля ссылочного типа, то они не будут склонированны? Собственно, это и происходит с делегатами. Если хочется побыстрее как-нить заткнуть, то можно так:
public object Clone()
{
var clone = (SomeClass)MemberwiseClone();
clone.PropertyChanged = null; // Если PropertyChanged - field-like событие.return clone;
}
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Клонирование и события
От:
Аноним
Дата:
25.06.10 11:45
Оценка:
Здравствуйте, cadet354, Вы писали:
C>Здравствуйте, <Аноним>, Вы писали:
А>>Здравствуйте, _FRED_, Вы писали:
_FR>>>Здравствуйте, Аноним, Вы писали:
А>>>>2. Почему то при редактировании клона приходят события тому объекту, который подписан на class1.PropertyChanged А>>>>Что я делаю не так?
C>как реализовано INotifyPropertyChanged?
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string PropertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
}
#endregion