2015-06-03 6 views
0

У меня есть класс с именем InvoiceКак получить/обновить свойство родительского объекта от дочернего объекта

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

У меня есть еще один класс называется Разделы

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

и еще один класс с именем Item

public Item() { 
     blah, blah; 
    } 

Теперь я передаю объект Item в свой пользовательский элемент управления Windows, и мне нужно обновить «Serv iceId ', расположенный в моем классе Invoice. Мой вопрос заключается в способе редактирования этого свойства из моего объекта объекта? и как я буду заниматься этим.

Прочая информация о том, что ни один из моих классов не наследует ни от чего. Это означает, что элемент не наследуется от раздела и раздела, а не от инспекции. Это просто списки. Спасибо за вашу помощь.

+0

Определённо можно сделать, но это может быть возможно, что вы делая это на неправильном месте с первого взгляда. «Элемент» ничего не изменит из 'Invoice' на моей модели –

ответ

1

Хороший способ сделать это через иерархическую инъекцию зависимостей. Section класса должен иметь конструктор, который требует Invoice и Parent или ParentInvoice недвижимости:

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; 
    } 
    //... 
} 
+0

Работал как шарм, спасибо огромное! ..! –

Смежные вопросы