複数のオブジェクトのプロパティが同じオブジェクトインスタンスを参照している場合、オブジェクトインスタンス内からそれらの参照を無効にするにはどうすればよいですか?プロパティオブジェクト内からプロパティを無効にする
例:
class Main {
private SignalHandler _signalHandler;
public IndicatorData Indicator1 { get; set; }
public IndicatorData Indicator2 { get; set; }
public IndicatorData Indicator3 { get; set; }
public Main() {
_signalHandler = new SignalHandler();
_signalHandler.SignalList.Add(new Signal());
_signalHandler.SignalList.Add(new Signal());
Indicator1 = new IndicatorData() { Name = "Indicator 1",
Signal = _signalHandler.SignalList[0] };
Indicator2 = new IndicatorData() { Name = "Indicator 2",
Signal = _signalHandler.SignalList[1] };
Indicator3 = new IndicatorData() { Name = "Indicator 3",
Signal = _signalHandler.SignalList[0] };
// Indicators binding to Signal.Value property in Indicator1 and Indicator3
// now gets updated through INotifyPropertyChanged.
_signalHandler.SignalList[0].Value = 123;
// Removing first element from the SignalList.
_signalHandler.SignalList[0].Remove();
}
}
class SignalHandler {
public SignalHandler() {
SignalList = new List<Signal>();
}
public List<Signal> SignalList { get; set; }
}
class IndicatorData {
public string Name { get; set; }
public Signal Signal { get; set; }
}
class Signal {
public int Value { get; set; }
public void Remove() {
// How can I now set all properties referring
// to the Value property above to null?
}
}
EDIT:詳述すると、私は私が入ってくるデータの格納場所として使用し、信号オブジェクトのコレクションを持っています。インジケータは、SignalオブジェクトのValueプロパティにバインドできます。このプロパティは、INotifyPropertyChanged(この例ではありません)を通じてUIで更新されます。私が望むのは、ユーザーがSignalListからSignalオブジェクトを削除すると、そのSignalオブジェクトを参照するさまざまなプロパティがこれを反映する必要があるということです。
これは奇妙なOOPパターンのようです。代わりにここで達成しようとしていることを教えてください。 – decPL
私に全面的な混乱のように見えます。同じインスタンスを参照するプロパティが2つ以上必要なのはなぜですか?それは意味をなさない。 –
変数はオブジェクトを参照し、オブジェクトは変数を参照しません –