Как указано здесь , класс PropertyChangedEventManager
Предоставляет реализацию WeakEventManager, так что вы можете использовать шаблон «слабый приемник событий» для присоединения слушателей к событию PropertyChanged.
Существует два способа подписки на изменения свойств:
void AddHandler (INotifyPropertyChanged source, EventHandler<PropertyChangedEventArgs> handler, string propertyName)
void AddListener (INotifyPropertyChanged source, IWeakEventListener listener, string propertyName)
В итоге оба они вызывают один и тот же метод:
private void AddListener(INotifyPropertyChanged source, string propertyName, IWeakEventListener listener, EventHandler<PropertyChangedEventArgs> handler)
с listener
или handler
, установленным на ноль.
Мне нужно изменить код с сильными обработчиками событий (т.е. source.PropertyChange += handler;
), чтобы следовать слабому шаблону. Это тривиально с использованием метода AddHandler
. Есть ли причины предпочитать AddListener
(что требует от меня реализации IWeakEventListener
)?
Если бы мне пришлось писать новый код, каковы причины, по которым я бы предпочел один код другому?