通过属性监视属性的一些优雅方法是什么



我有一些类的属性,我想缓存它们的值(它们过去的值)。对象本身会跟踪它们的更改,但我希望能够用一个简单的属性标记我要跟踪的属性。如何在不为每个属性编写任何手动代码的情况下监视属性的更改?

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

拦截对物业的呼叫并做你想做的事。

如果你想让一个属性通过监控、缓存、验证或日志等方式来扩展或更改属性的行为,你可能想考虑AOP(面向方面编程),这里也可以找到一份好的白皮书

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

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

使用postsharp,位置拦截方面将允许您拦截目标的执行(在执行之前、之后或发生错误时),并在这些拦截发生时编写一些要执行的代码,您将获得有关被拦截目标的元数据(例如PropertyInfo)和当前被拦截对象的实例,或发生的错误。

postsharp附带了一些预定义的方面(属性),您可以立即使用它们,也可以使用任何不同的行为创建自己的方面(特性)。

最新更新