如何从子对象获取/更新父对象的属性

时间:2015-06-03 19:55:50

标签: c# oop user-controls

我有一个名为Invoice的课程

public Invoice() {
        this.ServiceId = 0;
        this.Sections = new List<Section>();            
    }

我有另一个名为Sections的课程

public Section() {
        this.Items = new List<Item>();
    }

还有另一个名为Item

的类
public Item() {
        blah, blah;
    }

现在我将Item的对象传递给我的windows用户控件,我需要更新位于Invoice类的'ServiceId'属性。我的问题是有没有办法从我的项目对象编辑该属性?我将如何做到这一点。

其他值得注意的信息是,我的班级都没有继承任何东西。意味着Item不是从Section和Section继承而不是来自Inspection。它们只是列表集合。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

执行此操作的好方法是通过分层依赖注入。 Section类应该有一个需要InvoiceParentParentInvoice属性的构造函数:

public Section() 
{
    this.Items = new List<Item>();

    public Invoice Parent { get; set; }

    public Section(Invoice parent) 
    {
        this.Parent = parent;
    }
}

同样Item;它应该要求Section作为父母。然后从任何项目中你都可以使用

Invoice i = this.Parent.Parent;

您可以创建将添加部分和项目的方法,如下所示:

public Invoice()
{
    //....
    public Section AddSection()
    {
        var s = new Section(this);
        Sections.Add(s);
        return s;
    }
    //...
}