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

本文关键字:对象 更新 属性 获取 | 更新日期: 2023-09-27 17:53:01

我有一个名为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继承。它们只是列表集合。谢谢你的帮助。

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

做到这一点的一个好方法是通过分层依赖注入。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;
    }
    //...
}