是否可以使用PostSharp的NotifyPropertyChanged属性获取旧值和新值,在PorpertyChanged事件处理程序

时间:2017-12-11 18:47:16

标签: postsharp

我需要在PropertyChanged事件处理程序中捕获旧值和新值。我已经使用C#INotifyPropertyChanged接口为此实现了一个解决方案。 您可以在下面提问我已经实施的解决方案:

How to capture old value and new value in INotifyPropertyChanged implementation of PropertyChanged event in C#

我正在评估是否可以使用PostSharp完成此操作。因为使用当前解决方案,自动属性将不起作用。

提前感谢您的帮助。

Umesh制作

1 个答案:

答案 0 :(得分:0)

根据定义INotifyPropertyChanged接口处理通知 AFTER 值已更改且INotifyPropertyChanging接口处理通知 BEFORE 值已更改。 [NotifyPropertyChanged]方面既适用于您,也不提供开箱即用的方法。

此外,它会推迟通知,直到对同一个对象进行更复杂的更改,这既降低了通知次数,又确保在通知发生时,对象处于正确状态(想想改变对象上几个属性的方法)响应通知的代码(这不适用于INotifyPropertyChanging)。有关实施细节的更多信息here

您需要实现一个实现您的界面的方面,并为INotifyPropertyChangedINotifyPropertyChanging注册自己,在每个更改通知上记录属性值并使用记录的上的值已更改通知以提升您自己的活动。

您可能需要执行以下操作:

这似乎不是一个复杂的方面,但你肯定需要熟悉PostSharp的Aspect Framework的高级概念。