ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

更新通知をRxで横流しするのはいい考えじゃないかなと思って最近コードを改めてる

要は、INotifyPropertyChangedインターフェイスを実装しているメンバーについて、

  • PropertyChangedイベントをハンドルして
  • 同じ名前のプロパティを受け付けにしてお

これで、めんどくさい更新通知機能の実装が少しだけ楽になります*1
具体的にはこんな感じです。(Livet使ってます)

var d = Observable.FromEventpatern<PropertyChangedEventHandler, PropertyChangedEventArgs>(
    h => Hoge.PropertyChanged += h, 
    h => Hoge.PropertyChanged -= h)
.Select(e => e.EventArgs.PropertyName)
.SubscribeOn(DispatherHelper.UIDispather)
.Subscribe(RaisePropertyChanged);
CompositeDisposable.Add(d);

これを初期化するときにやっておいて、プロパティの名前をそろえておけば更新通知を横流しできます。偉い人はとっくの昔にやってるんだろうけど、これに気づいたときは「はっ」となりました。

*1:スニペット使えというのはごもっともですが、多少短くなるのでどちらにしても結構おいしかったりする