例えば、以下のように
自動プロパティ
ができたおかげで、プロパティの記述は随分楽になりました。
しかし、バインディングするために INotifyPropertyChanged インターフェイスを継承した時の変更が大きいことが残念です。
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName) {
if (this.PropertyChanged == null) return;
var args = new PropertyChangedEventArgs(propertyName)
this.PropertyChanged(this, args);
}
public int MyProperty { get; set; }
private int _MyProperty2;
public int MyProperty2 {
get { return _MyProperty2; }
set {
if (_MyProperty2 == value) return;
_MyProperty2 = value;
OnPropertyChanged("MyProperty2");
}
}
MyProperty のように書いたプロパティの値を、バインディングする場合、MyProperty2 のように書き換えなければなりません。
自動プロパティの何が便利かというと、単にデータを格納する目的でクラスを作るような場合だと思います。
しかし、このような目的で作られたクラスは、INotifyPropertyChanged インターフェイスを継承する場面が多くなるので、結局 MyProperty2 の書き方に変更するという場合が多々あります。