我有我想要缓存(他们的过去值)值的类的属性。对象本身会跟踪它们的变化,但我希望能够用一个简单的属性来标记我想跟踪的属性。我怎样才能监视属性的变化,没有任何手动代码每个属性?什么是通过属性监视属性的优雅方式?
0
A
回答
0
使用通用代理模式。 有很多代理生成器,但您可以使用远程处理提供的真实/透明代理。
拦截对财产的呼叫,并做你想做的事情。
0
如果你想要一个属性来扩展或改变一个属性的行为的东西,如监控,缓存,验证或登录你可能要考虑AOP (Aspect Oriented Programming),a good white paper can be found here too
在.NET中最常见的AOP工具Post Sharp。
将该库/工具集成到您的解决方案和Visual Studio中,它将查找特定的属性,将其识别为方面并将它们在编译(或运行时,取决于某些因素)应用于目标属性,方法,类,甚至整个程序集。
与帖子锐利,location interception aspect将允许您拦截目标的执行(在执行前,发生错误或发生错误时)并编写一些代码以在发生拦截时执行,并且您将获得有关元数据的信息被拦截的目标(例如PropertyInfo)以及当前被拦截的对象实例或发生的错误。
有一些预先定义的方面(属性)与锐利后打包,你可以立即使用它们,或者你可以创建自己的方面(属性)与任何不同的行为。
相关问题
- 1. 通过优雅的属性
- 2. 在设置属性时,什么是最优雅的交换事件的方式?
- 3. 什么是最简单最优雅的方式来利用自定义属性
- 4. 优雅的分组属性方法
- 5. 使用Rails验证两个属性中只有一个属性的最优雅方式是什么?
- 6. ECMAScript-5中属性属性“功能”的优点是什么?
- 7. 通过名称获得嵌套对象属性的更优雅方式?
- 8. 通过条件在Javascript中添加和设置属性的优雅方式
- 9. 什么是从C#中的子类中聚合属性的优雅方法?
- 10. 什么是“TemplatedParent模板属性”依赖项属性优先
- 11. 访问对象属性的更优雅或有效的方式?
- 12. 优雅的方式来控制字符串属性的长度
- 13. 超载Python类属性的一种优雅的方式
- 14. 优雅的方式来迫使具有相同的属性
- 15. 在Python中复制属性的更优雅的方式3
- 16. 写对多个属性排序比较优雅的方式
- 17. 优雅的方式来添加属性以每个元素在
- 18. 什么是强属性属性
- 19. 什么是属性?
- 20. 过滤ngOptions通过属性的属性
- 21. Python的方式通过属性
- 22. 什么是初始化属性或属性的Pythonic方法?
- 23. 监视属性变化
- 24. ARIA属性,DOM和优雅劣化
- 25. 通过属性
- 26. 通过属性
- 27. 通过属性
- 28. 通过属性
- 29. 通过属性
- 30. uitableviewcell的属性是什么?
[团结拦截(http://msdn.microsoft.com/en-us/library/dn178466%28v=pandp.30%29.aspx)是一种选择 - 包装所有的实例和之前捕获信息/后调用。与属性无关,所以没有答案...(我不完全确定你的意思是“通过属性监视”,因为属性并不意味着/自己做任何事情)... –
@AlexeiLevenkov我想创建一个系统,当一个属性被标记了一个属性时,其更改会被其他子系统自动监控。 –
您可能想要添加代码的样子,使其看起来像答案 - 样本对象和对象的样本创建......还要注意,您是否已经有了类似于“INotifyPropertyChanged”的东西。 –