Можно ли получить старое значение и новое значение, используя атрибут NotifyPropertyChanged в PostSharp, в обработчике событий PorpertyChanged
Мне нужно захватить старое и новое значение в обработчике событий PropertyChanged. Я уже реализовал решение для этого с помощью интерфейса C# INotifyPropertyChanged. Вы можете обратиться ниже вопрос для решения, которое я реализовал:
Я оценивал, можно ли это сделать с помощью PostSharp. Поскольку с текущим решением, авто свойства не будут работать.
Заранее спасибо за помощь.
Umesh
1 ответ
По определению INotifyPropertyChanged
интерфейс имеет дело с уведомлением ПОСЛЕ изменения значения и INotifyPropertyChanging
интерфейс имеет дело с уведомлением ДО того, как значение изменилось. [NotifyPropertyChanged]
аспект реализует оба для вас, но не предоставляет способ делать то, что вы хотите из коробки.
Кроме того, он откладывает уведомления до более сложных изменений в одном и том же объекте, что снижает количество уведомлений и гарантирует, что при получении уведомления объект находится в правильном состоянии (например, метод, изменяющий несколько свойств объекта) для кода, который реагирует на уведомление (это не относится к INotifyPropertyChanging
). Подробнее о реализации здесь.
Вам нужно будет реализовать аспект, который будет реализовывать ваш интерфейс и зарегистрировать себя для INotifyPropertyChanged
а также INotifyPropertyChanging
запись значений свойств в каждом изменяющемся уведомлении и использование этих записанных значений в измененном уведомлении для создания собственного события.
Вам, вероятно, нужно сделать следующее:
- ввести интерфейс
- использовать аспект уровня экземпляра
- инициализировать экземпляр аспекта
- получить значение свойства
- динамически добавить базовый аспект
- правильно упорядочить аспекты
Это не кажется сложным аспектом, но вам определенно необходимо ознакомиться с продвинутыми концепциями Aspect Framework PostSharp.