Я связываю себя в узлах по простой проблеме. У меня есть класс, который реализует INotifyPropertyChanged
. Некоторые из получателей свойств экземпляра используют статические свойства, и поэтому их значения могут меняться, если изменяется статическое свойство? Здесь упрощенный пример.
class ExampleClass : INotifyPropertyChanged
{
private static int _MinimumLength = 5;
public static int MinimumLength
{
get
{
return _MinimumLength;
}
set
{
if (_MinimumLength != value)
{
_MinimumLength = value;
//WHAT GOES HERE
}
}
}
private int _length = -1;
public int length
{
get
{
return (_length > _MinimumLength) ? _length : _MinimumLength;
}
set
{
var oldValue = (_length > _MinimumLength) ? _length : _MinimumLength;
if (_length != value)
{
_length = value;
var newValue = (_length > _MinimumLength) ? _length : _MinimumLength;
if (newValue != oldValue)
{
OnPropertyChanged("length");
}
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Ясно, что если статическое свойство MinimumLength
изменяется, то каждое свойство экземпляра length
также может меняться. Но как статическое свойство сигнализирует о возможном изменении экземпляров? Он не может вызвать OnPropertyChanged
, поскольку это не является статическим.
Я мог бы вести список на уровне класса всех экземпляров и вызывать метод на каждом из них, но почему-то это кажется излишним. Или я мог бы вытащить статические свойства в одноэлементный класс, но логически они живут на уровне класса. Есть ли устоявшийся образец для этого или я должен думать об этом по-другому?