我正在尝试编写一个分析工具,用于比较和跟踪您的应用程序中的数据。
我目前的目标是找到一种方法,一旦跟踪的属性的值发生变化,即可将触发器发送给经理。
在理想的世界中,设置跟踪属性的过程应尽可能简单,而无需像INotifyPropertyChanged
界面那样按代码方式更改实际属性。带有有效获取器和设置器的任何属性都应该是可跟踪的。
我的想法是使用Reflection钩住属性的setter方法,并在调用setter之后在其中添加回调。
是否有更好的方法来解决此问题?还是可以通过反思来解决这个问题,如果可以,怎么办?
答案 0 :(得分:2)
如果每次更改都应尽快发送触发器,则唯一的选择是在属性周围添加包装器(一种或另一种)。 AOP框架可以大大简化此过程,并有助于避免样板代码(例如INotifyPropertyChanged“模式”)。其中每个都有其优缺点,例如:
PostSharp
AspectInjector(可能对您的需求有所帮助的示例 https://github.com/pamidur/aspect-injector/tree/master/samples/NotifyPropertyChanged)