有哪些优雅的方法可以通过属性监控属性?

时间:2014-02-08 01:33:49

标签: c# .net reflection properties attributes

我有关于要缓存(过去的值)值的类的属性。对象本身将跟踪它们的更改,但我希望能够使用简单属性标记我想要跟踪的属性。如何在没有任何手动代码的情况下监控属性的更改?

2 个答案:

答案 0 :(得分:0)

使用通用代理模式。 有很多代理生成器,但您可以使用远程提供的真实/透明代理。

拦截对财产的召唤并做你想做的事。

答案 1 :(得分:0)

如果您希望某个属性使用监控,缓存,验证或日志记录等扩展或更改属性的行为,您可能需要考虑AOP (Aspect Oriented Programming)a good white paper can be found here too

.net中最常见的AOP工具是Post Sharp

在您的解决方案和visual studio中集成了该库/工具,它将查找它识别为方面的特定属性,并将它们应用于编译(或运行时,取决于某些因素)到目标属性,方法,类,甚至整个集会。

使用post sharp,location interception aspect将允许您拦截目标的执行(在执行之前,之后或发生错误时)并编写一些代码,以便在这些拦截发生时执行,并且您将给出关于被拦截的目标的元数据(例如PropertyInfo)以及当前被拦截的该对象的实例,或发生的错误。

有一些预定义的方面(属性)与post sharp打包在一起,您可以立即使用它们,或者您可以使用任何不同的行为创建自己的方面(属性)。