我有关于要缓存(过去的值)值的类的属性。对象本身将跟踪它们的更改,但我希望能够使用简单属性标记我想要跟踪的属性。如何在没有任何手动代码的情况下监控属性的更改?
答案 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打包在一起,您可以立即使用它们,或者您可以使用任何不同的行为创建自己的方面(属性)。