首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性对象中的属性为空

属性对象中的属性为空
EN

Stack Overflow用户
提问于 2017-10-24 14:18:34
回答 1查看 92关注 0票数 0

如果多个对象中的属性引用同一个对象实例,那么如何从对象实例中取消这些引用?

示例:

代码语言:javascript
复制
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?
    }
}

编辑:详细说明,我有一个信号对象的集合,我使用这些对象作为输入数据的存储位置。指示符可以绑定到信号对象的Value属性,该属性将通过INotifyPropertyChanged在UI中更新(在本例中不是这样)。我想要的是,如果用户从SignalList中移除信号对象,引用该信号对象的各种属性应该反映这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-25 05:12:54

这开始是作为一个评论,但它太长了,我也认为它可能会指向你想要去的方向:

我猜您提到的INotifyPropertyChanged接口是在Signal类上实现的。

我认为您应该将List更改为ObservableCollection。这将使您能够在从集合中添加或移除项时处理事件。

然后,您可以向Signal类添加一个属性,指示它是否在集合中。

从那里可以很容易地在PropertyChanged类中使用IndicatorData事件,如果信号被从集合中移除,则对其进行空化。

这里可能存在问题的一点是,没有什么可以阻止您向多个集合添加相同的信号(如果您有处理同一个Signal实例的多个Signal实例)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46912945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档