Szukam łatwego sposobu wymuszenia poprawnej implementacji INotifyPropertyChanged, tj. Gdy podniesiony jest PropertyChanged, musi odwoływać się do właściwości, która jest faktycznie zdefiniowana. Próbowałem to zrobić za pomocą nowych narzędzi CodeContract firmy Microsoft, ale nadal otrzymuję ostrzeżenie "CodeContracts: wymaga niesprawdzonych". Oto mój kod ...Egzekwowanie poprawnej implementacji INotifyPropertyChanged z CodeContracts - "wymaga nieudowodnionej"
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;
}
Czy jest jeszcze jakiś sposób, aby to zadziałało?
Kontrolujący statyczne nie odbicie celu potwierdzenia zamówienia. http://social.msdn.microsoft.com/Forums/en-US/codecontracts/thread/37e28a50-bf64-4b02-b384-f55117735690/ – hwiechers