快速监控给定类的属性值变化?

时间:2012-12-15 01:29:32

标签: c# properties

说,我写了一个课 ClassA 。它运作良好,直到有一天我希望监控属性值的变化并对变化作出反应。最快的方法是什么?

我能想到的一种方法:让 ClassA 继承INotifyPropertyChanged,并修改属性getter / setter以触发PropertyChanged事件,并在事件触发时执行某些操作。

但如果 ClassA 有10个要监控的属性,这可能意味着改变了代码。

是否还有更好的包装或修改 ClassA 的方法,以便我可以连接一些反应逻辑?

幻想:属性能做到吗?也许完全是胡说八道,我写了一个属性,我只需要将这个属性添加到我想监视的属性中。它比添加/修改getter / setter更好。

1 个答案:

答案 0 :(得分:1)

你可能想要研究的是使用AOP(面向方面​​编程)简而言之,你可以做的是在类方法和属性周围放置一个包装器,并在调用之前和之后做出反应。

在包装器类中,你将有类似这样的东西

Invoke(Args[] Args, Aspect Aspect)
{
  //Do something like monitor something here 
  Aspect.Invoke //execution of method or property
 //Do other stuff here... maybe more monitoring
}

关于这一点的美丽是关注点的分离。在您的ClassA中,您的代码可以继续专注于之前关注的任何内容,而无需担心监控代码。包装器处理监视。

参考资料:

有关AOP的更多信息 http://en.wikipedia.org/wiki/Aspect-oriented_programming

可用于在应用程序中实现AOP的C#库。 城堡项目/动态代理 http://www.castleproject.org/projects/dynamicproxy