Можно ли получить старое значение и новое значение, используя атрибут NotifyPropertyChanged в PostSharp, в обработчике событий PorpertyChanged

Мне нужно захватить старое и новое значение в обработчике событий PropertyChanged. Я уже реализовал решение для этого с помощью интерфейса C# INotifyPropertyChanged. Вы можете обратиться ниже вопрос для решения, которое я реализовал:

Как захватить старое значение и новое значение в INotifyPropertyChanged реализации события PropertyChanged в C#

Я оценивал, можно ли это сделать с помощью PostSharp. Поскольку с текущим решением, авто свойства не будут работать.

Заранее спасибо за помощь.

Umesh

1 ответ

По определению INotifyPropertyChanged интерфейс имеет дело с уведомлением ПОСЛЕ изменения значения и INotifyPropertyChanging интерфейс имеет дело с уведомлением ДО того, как значение изменилось. [NotifyPropertyChanged] аспект реализует оба для вас, но не предоставляет способ делать то, что вы хотите из коробки.

Кроме того, он откладывает уведомления до более сложных изменений в одном и том же объекте, что снижает количество уведомлений и гарантирует, что при получении уведомления объект находится в правильном состоянии (например, метод, изменяющий несколько свойств объекта) для кода, который реагирует на уведомление (это не относится к INotifyPropertyChanging). Подробнее о реализации здесь.

Вам нужно будет реализовать аспект, который будет реализовывать ваш интерфейс и зарегистрировать себя для INotifyPropertyChanged а также INotifyPropertyChangingзапись значений свойств в каждом изменяющемся уведомлении и использование этих записанных значений в измененном уведомлении для создания собственного события.

Вам, вероятно, нужно сделать следующее:

Это не кажется сложным аспектом, но вам определенно необходимо ознакомиться с продвинутыми концепциями Aspect Framework PostSharp.

Другие вопросы по тегам