说我有一个对象具有子StatusType对象的客户端。两者都实现INotifyPropertyChanged。取消订阅子对象prop更改事件
客户签约的道具在属性检查空,并确保值后改变事件是不同
public StatusType Status
{
get { return _status ?? (_status = this.GetNewStatusType()); }
set
{
if (!(_status ?? (_status = this.GetNewStatusType())).Equals(value))
{
_status.PropertyChanged -= Status_PropertyChanged;
_status = value;
_status.PropertyChanged += Status_PropertyChanged;
base.OnPropertyChanged("Status");
}
}
}
客户端侦听属性更改事件和气泡起来。
void Status_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnPropertyChanged("Status." + e.PropertyName);
}
客户端和StatusType从EntitiesBase,这确实执行INotifyPropertyChanged的实际繁重继承。
所以我真正的问题是我需要从内存的原因客户退订StatusType.PropertyChanged事件?如果是这样,我应该使用解构器,还是让客户端实现IDisposable?
如果我要使用解构器,它会看起来像这样吗?
~Client()
{
if (_status != null)
{
_status.PropertyChanged -= Status_PropertyChanged;
_status = null;
}
}
在此先感谢。在我们的应用程序中,有些时候我们可能在内存中拥有超过1000个客户端,我想确保我的效率。