我有一个传递给接口的对象,我希望每次对象的一个成员改变状态时,该接口后面的具体操作就会执行一些动作。换句话说,我有一些包含整数的对象。当该整数的值发生变化时,我希望我的具体类位于该接口后面做一些工作。
现在,我可以做一些这样的事情,让一个线程处于wait
状态,并在使用pulse
完成一些monitor
后执行操作。但是,我想知道C#语言是否有这种东西固有的支持。这样,当对象的成员改变状态时,将自动执行该动作。我知道这可能是不可能的,如果有替代解决方案,我想听听。或者,线程的事情听起来是个好主意吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
您应该实现INotifyPropertyChanged,并在INotifyPropertyChanged之后继承您的接口。然后介绍所有状态相关事物的属性,并始终在setter方法中触发PropertyChanged事件。
这需要一些样板代码,但它是非常可靠的解决方案。您可以将属性设置为虚拟,并使用Unity等IoC容器为您实现样板。
实现完成后,您只需使用+ =运算符订阅对象的PropertyChanged事件。
myWatchedObject.ProperyChanged += listener.DependentObjectChangeHandler;
答案 2 :(得分:0)
最简单的方法是属性:
class MyClass
{
private int _MyInteger;
public int MyInteger
{
get { return _MyInteger; }
set { _MyInteger = value; /* insert your "do some work" code here */ }
}
}