【发布时间】:2011-10-05 14:04:23
【问题描述】:
我遇到了一个非常奇怪的问题,我似乎无法用一个小例子重现。抱歉,这个问题有点含糊。
我有一个包含地址的人。两者都继承自实现 INotifyPropertyChanged 的 BaseEntity。我希望 Person 类 NotifyPropertyChanged("Address") 不仅在设置地址时,而且在地址本身更改时,所以我在 Person 中的 get/set 看起来像这样:
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] 到 BaseEntity 的 PropertyChanged),现在当我更改 Address (somePerson.Address.Street = "something new")该地址的 PropertyChanged 的 invocationCount 为 0,以前为 1,因此 Person 不会收到通知,并且本身不会触发 NotifyPropertyChanged("Address");
同样,如果我从 Person 中删除 [Serializable],它会起作用,如果我将它添加回来,它就不起作用。我实际上还没有序列化任何东西,我只是添加了 [Serializable] 属性。
有什么想法吗?
【问题讨论】:
标签: c# events inotifypropertychanged serializable