INotifyPropertyChanged の正しい実装を強制する簡単な方法を探しています。つまり、PropertyChanged が発生したときに、実際に定義されているプロパティを参照する必要があります。Microsoft の新しい CodeContract ツールでこれを実行しようとしましたが、「CodeContracts: requires unproven」という警告が引き続き表示されます。これが私のコードです...
public sealed class MyClass : INotifyPropertyChanged
{
private int myProperty;
public int MyProperty
{
get
{
return myProperty;
}
set
{
if (myProperty == value)
{
return;
}
myProperty = value;
OnPropertyChanged("MyProperty");
}
}
private void OnPropertyChanged(string propertyName)
{
Contract.Requires(GetType().GetProperties().Any(x => x.Name == propertyName));
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
とにかくこれを機能させる方法はありますか?