Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Два класса требуют экземпляры друг друга

#c_sharp


У меня есть два класса. В каждом их них нужен экземпляр другого класса.

SQLite sqllite = new SQLite(config);
FireBird fb = new FireBird(config, sqllite);


т.е. мне нужно 

SQLite sqllite = new SQLite(config,fb);


Но я так сделать не могу т.к. он еще не создан.

Местами классы менять не могу -- тоже самое получится. Что одному нужен другой, который
еще не создан.

Вот у меня класс SQLite. В нем есть меод public UserData GetData()
Метод берет данные из SQLite и должен передать их в экземпляр fb.InsertData(ud).

В свою очередь fb должен сделать тоже самое. Он должен иметь возможность взять из
FireBird данные и отправить их в экземпляр sqllite.InsertData(ud) 
    


Ответы

Ответ 1



То есть, вы пытаетесь связать два класса, отвечающих за разные базы данных, и скормить каждому экземпляр другого в конструкторе? Так не получится, какой-то из экземпляров вам придётся создавать первым. Можно, конечно, было бы «пробить силой», и заинжектить нужные экземпляры после создания. Но это всё равно плохой путь: эти классы в вашей архитектуре знают слишком много друг о друге. Я бы посоветовал делать так: Классы SQLite и FireBird друг о друге не знают. Логика получения данных из одного и передачи другому находится во внешнем по отношении к ним классе, который имеет ссылки на оба, и работает с ними.

Комментариев нет:

Отправить комментарий