INotifyPropertyChangedを自動実装してくれるPropertyChanged.fodyが超便利
ViewModel的なものを作るときに必ず出てくるのがINotifyPropertyChanged インターフェイス (System.ComponentModel)
これを実装するのが定跡ではあるんだけど案外面倒くさい。
C# - INotifyPropertyChangedを実装する - Qiita
public sealed class Sample { public string FamilyName { get; set} }
これを
public sealed class Sample : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public string FamilyName { get { return this._FamilyName; } set { if( this._FamilyName == value ) return; this._FamilyName = value; this.PropertyChanged?.Invoke( this , new PropertyChangedEventArgs( nameof( FamilyName ) ) ); } } private string _FamilyName; }
こんな感じで各プロパティについて、実際に値が変更されたかをチェックし変更された時はイベントをinvokeしなきゃならないとかかなりめんどい。
以前からこれに対してT4テンプレートを使ったりコードスニペットを使ったりって記事は目にしてたけど、拡張性とか後々のメンテを考えるとイマイチ使いにくかった。
- T4 TemplateでViewModelを作る - かずきのBlog@hatena
- コードスニペットを使った INotifyPropertyChanged の実装(再度更新) | ++C++; // 未確認飛行 C ブログ
救世主 PropertyChanged.fody
で、見つけたのがこれ。
Injects INotifyPropertyChanged code into properties at compile time
Fody/PropertyChanged · GitHub
NuGetでインストールしたら
using PropertyChanged; [ImplementPropertyChanged] public sealed class Sample { public string FamilyName { get; set} }
こうするだけ。
( ゚Д゚) すっげぇ。