我经常这样写代码:
MyObject property;
MyObject Property
{
get { return property; }
set {
if (property != null)
property.Changed -= property_Changed; // unsubscribe from the old value
property = value;
property.Changed += property_Changed; // subscribe to the new value
}
}
我正在寻找一种优雅的方式来自动取消订阅。 有什么想法吗?
最佳答案
这与您尝试实现的想法一样优雅。当然,您有一个逻辑错误,即 value
在传入时可能为 null,因此 property.Changed += property_Changed
会爆炸。
基本上,如果您分配一个新对象,您希望取消订阅旧元素的事件并附加到新元素事件。
关于c# - 事件取消订阅/重新订阅属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7195945/