私は単純な問題で自分自身を結び目で結びつけています。を実装するクラスがあります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
それは静的ではないため、呼び出すことはできません。
すべてのインスタンスのクラス レベルでリストを保持し、各インスタンスでメソッドを呼び出すこともできますが、どうもやり過ぎのように感じます。または、静的プロパティをシングルトン クラスに引き出すこともできますが、論理的にはそれらはクラス レベルに存在します。これには確立されたパターンがありますか、それとも別の方法で考えるべきですか?