是否有一种方法在每次对象改变状态时执行一个动作
本文关键字:执行 状态 一个 改变 一种 方法 是否 对象 | 更新日期: 2023-09-27 18:13:26
我有一个被传递到接口的对象,我希望在该接口后面的具体执行一些操作,每次对象的成员之一改变状态。换句话说,我有一个包含整数的对象。当该整数的值发生变化时,我希望位于该接口后面的具体类做一些工作。
现在,我可能会做这样的事情,有一个线程,坐在wait
状态,并执行动作,一旦一些pulse
是使用monitor
完成。但是,我想知道c#语言是否对这种事情有内在的支持。这样,当对象的成员改变状态时,操作将自动执行。我知道这可能是不可能的,如果有其他的解决方案,我希望听到。或者,线程听起来是个好主意吗?
你应该实现INotifyPropertyChanged,也继承你的接口后INotifyPropertyChanged。然后为所有与状态相关的事物引入属性,并且总是在setter方法中触发PropertyChanged事件。
这需要一些样板代码,但它是非常可靠的解决方案。你可以让你的属性是虚拟的,并使用IoC容器(如Unity)为你实现样板。
实现完成后,您只需使用+=操作符订阅对象的PropertyChanged事件。
myWatchedObject.ProperyChanged += listener.DependentObjectChangeHandler;
- 使用setter属性封装对象的状态。
- 为setter属性添加更多代码以引发事件或调用方法。
最简单的方法是:
class MyClass
{
private int _MyInteger;
public int MyInteger
{
get { return _MyInteger; }
set { _MyInteger = value; /* insert your "do some work" code here */ }
}
}