У меня есть класс Bar, который реализует INotifyPropertyChanged.При установке свойства CurrentFoo я хочу поднять PropertyChanged, если значение меняется.Foo реализует IEquatable, но не оператор ==.
В настоящее время мой код выглядит следующим образом:
public class Bar : INotifyPropertyChanged
{
// ...
private Foo fooValue;
/// <summary>
/// Gets or sets the active Foo
/// </summary>
/// <value>The active Foo.</value>
public Foo CurrentFoo
{
get
{
return this.fooValue;
}
set
{
// Notify listeners if value is changing.
if (null == this.fooValue && null != value
|| null != this.fooValue && null == value
|| null != this.fooValue && null != value && !this.fooValue.Equals(value))
{
this.fooValue = value;
this.OnPropertyChanged("CurrentFoo");
}
}
}
// ...
}
И он работает, но ... тьфу!Есть ли более элегантный / передовой метод выполнения этой проверки без восстановления шаблона объекта Null (несовместимого с остальной частью нашей кодовой базы)?
Я рассмотрел написание вспомогательного метода, такого как IsOneObjectNullButNotBoth (объект a, объект b) ... но, опять же, бла.Конечно, мне не хватает удобного метода библиотеки классов, хотя я уже проверил его.