Професионална програма
Loading...
+ Нов въпрос
Filkolev avatar Filkolev 4485 Точки
Best Answer

Не разбирам точно какво искаш да постигнеш.

Имаш някакви обекти тип компютър и обекти тип компонент. Те са независими едни от други, т.е. един компонент може да го добавиш към кой да е компютър. Това обаче няма как да стане автоматично при инстанциирането на компонента. Трябва изрично да кажеш "създавам компонент с тия параметри" и след това "този компонент е част от този компютър". Ако инстанциираш компонент, трябва ти да кажеш към кой компютър да го добавиш (ако искаш въобще да го добавиш, може да има случаи, в които не искаш).

Примерно (може да се подават и някакви данни на конструкторите, за простота приемам, че има празни такива):

Computer pc = new Computer();

Component component = new Component();

pc.AddComponent(component);

Може и по-кратко ако нямаш необходимост да пазиш референция към компонента:

pc.AddComponent(new Component());

Двете неща са аналогични, създаваш компонент и го добавяш към компютъра; разликата е, че във втория вариант нямаш променлива, която да пази компонента.

Няма обаче как да създадеш компонент и магически той сам да се добави някъде. Или ако достигнеш такъв вариант - най-вероятно правиш нещо грешно и нарушаваш поне един принцип на ООП.

Добавка: Може при инстанцииране на компютъра ръчно да му напълниш списъка с т.нар. object initializer, например:

Computer pc = new Computer { Components = new List<Component> {new Component(), new Component() ... }};

Това обаче е малко в разрез с начина, по който си задал въпроса си, защото тук при инстанцирането на компютър се създават и компонентите му, а не впоследствие на създаден компютър да се добавя новосъздаден компонент.

2
22/11/2015 13:30:59
msmilkoff avatar msmilkoff 338 Точки

Да разбрах, просто му казах pc.Components = new List<Component>();   и след това ги добавих.

0