Я использую Reactive Extensions для простой обработки событий в моих ViewModels (Silverlight и/или Wp7 приложениях). Для простоты предположим, что в ctor моей VM есть такая строка:
Observable.FromEvent<PropertyChangedEventArgs>(
h => MyObject.PropertyChanged += h,
h => MyObject.PropertyChanged -= h)
.Where(e=>e.PropertyName == "Title")
.Throttle(TimeSpan.FromSeconds(0.5))
.Subscribe(e=>{/*do something*/});
this возвращает объект IDisposable, который при утилизации отписывается. (Я прав в этом предположении?)
Если у меня нет ссылки на него, рано или поздно он будет собран, и мой обработчик будет отписан.
У меня обычно есть List
в моей VM, и я добавляю в него подписки, но я чувствую себя грязным из-за этого, как будто я делаю что-то не так, как положено в Rx.
Какова лучшая практика, рекомендуемый шаблон в подобных ситуациях?