c # - Созданный объект, чтобы иметь возможность доступа к членам объекта, который его создал - PullRequest
6 голосов
/ 12 февраля 2011

Это не наследование, это не вложенные классы, я не знаю, что это такое, и вот что приводит меня сюда.

Я пишу программу, и это функциональность высокого уровня:

Main () Создание массива объектов типа «A ()». Конструктор «A ()» создает 20 объектов «B ()». Конструктор «B ()» создает 4 объекта «C ()».

* 1006.* Теперь «B ()» хочет использовать некоторые из открытых членов «A ()», а «C ()» хочет использовать некоторые из открытых членов «A ()» и «B ()»

Другими словами, A - контрольная запись, B - список из 20 команд, и каждая команда имеет до 4 условий.Теперь C () должен быть в состоянии проверить условия, B () должен быть в состоянии выполнить команду на основе проверки C (), и A () должен каким-то образом знать, когда все B выполнены

Так чтоИдея состоит в том, что определенные объекты порождаются, и они должны иметь возможность использовать членов из объекта, который их создал.Я мог бы передать информацию в конструкторе, но это утомительно.Должен быть хороший дизайн, чтобы быть в состоянии сделать вышеупомянутое.

Может кто-нибудь помочь ??

1 Ответ

8 голосов
/ 12 февраля 2011

Я мог бы передать информацию в конструкторе, но это утомительно.

Это один из очень уважительных способов такого поведения и очень распространенный паттерн. Утомительность минимальна, особенно если вы разрабатываете свой код чисто. Он в основном меняет одну строку кода с B bInstance = new B(); на B bInstance = new B(this); и т. Д.

A () должен как-то знать, когда все B сделаны

Я бы порекомендовал использовать события для этого. B может включать в себя событие «Completed», на которое подписывается каждый A. Это позволит ему точно знать, когда все закончится.

...