Как построить взаимодействие между классами?
Нужно реализовать следующую схему
Собственно по картинке:
Верхний менеджер(generalManager) должен согласовывать действия всех менеджеров, которые от него зависят(М1-М3), причем он сам должен реализовывать концепцию паттерна "Одиночка"
Менеджеры второго звена, управляют содержимым ArrayList'ов(добавление, изменение, удаление и т.д.), причем перед добавлением/изменением/удалением объектов из него должны консультироваться с главным менеджером и получать от него либо разрешение выполнить запрошенное действие, либо отказ.
Моя проблема заключается в том, что не я знаю как такое реализовать на C#.
В С++ я просто бы в менеджерах второго уровня создал бы статичную константную ссылку, в которой в конструкторе присваивал бы адрес главного менеджера, а в нем, в свою очередь, ссылку на некий абстрактный класс, от которого бы наследовали менеджеры М1-М3. Но в шарпе, на сколько я понимаю, ссылки есть только в небезопасном коде, который считается там извратом))
Подскажите пожалуйста как такое реализовать именно в C#, какие синтаксические конструкции языка нужно использовать, просто сам только второй день шарп изучаю...
Среда VS 2008
ОС WinXP
в шарпе объектные типы данных это и есть ссылки
Цитата: LM(AL/M)
в шарпе объектные типы данных это и есть ссылки
т.е. Вы хотите сказать тогда для связи менеджеров второго уровня с главным, мне в них нужно просто создать инструкцию?
Код:
private static GeneralManager gManager;
где GeneralManager - мой тип данных, описывающий главный менеджер
Хм... т.е. при инстанцировании менеджера второго уровня мне нужно будет в вышеуказанную ссылку проводить поверхностное копирование главного менеджера?
Цитата:
Хм... т.е. при инстанцировании менеджера второго уровня мне нужно будет в вышеуказанную ссылку проводить поверхностное копирование главного менеджера?
Да. Помоему в любой книжке по C# на первых ~50 стр. можно найти то, что любой тип наследуемый от Object - хранится в куче, а переменная в коде - ссылка на него. Исключением являются структуры и объекты наследуемые от ValueType. Они хранятся в стеке.
Цитата: Norgat
Да. Помоему в любой книжке по C# на первых ~50 стр. можно найти то, что любой тип наследуемый от Object - хранится в куче, а переменная в коде - ссылка на него. Исключением являются структуры и объекты наследуемые от ValueType. Они хранятся в стеке.
Да, помню такое.
LM(AL/M), Norgat, спасибо за помощь