Я столкнулся с действительно странной проблемой, которую не могу , кажется, воспроизвести на небольшом примере.Извините, если этот вопрос немного расплывчат.
У меня есть человек, который содержит адрес.Оба наследуют от BaseEntity, который реализует INotifyPropertyChanged.Я хочу, чтобы класс Person NotifyPropertyChanged ("Address") не только при задании адреса, но и при изменении самого этого адреса, поэтому мой метод get / set в Person выглядит следующим образом:
class Person : BaseEntity
{
private Address address;
public Address Address
{
get { return address; }
set
{
address = value;
NotifyPropertyChanged("Address");
// propagate changes in Address to changes in Person
address.PropertyChanged += (s, e) => { NotifyPropertyChanged("Address"); };
}
}
...
}
Это имеетхорошо работал в течение нескольких месяцев.
Я добавил [Serializable] в Person, Address и BaseEntity (и [field: NonSerialized] в PropertyChanged BaseEntity), а теперь, когда я изменяю Address (somePerson.Address).Street = "что-то новое") invocationCount адреса PropertyChanged этого адреса равен 0, где он был равен 1, поэтому Person не получает уведомления и сам не запускает NotifyPropertyChanged ("Address");
Снова,если я удаляю [Serializable] из Person, он работает, а если я добавляю его обратно, он не работает.На самом деле я еще ничего не сериализую, я только что добавил атрибут [Serializable].
Есть идеи?