Наш текущий проект столкнулся с проблемой циклической зависимости. Наша сборка бизнес-логики использует классы и статические методы из нашей сборки SharedLibrary. SharedLibrary содержит целую кучу вспомогательных функций, таких как класс SQL Reader, перечисления, глобальные переменные, обработка ошибок, ведение журнала и валидация.
SharedLibrary нуждается в доступе к объектам Business, но для объектов Business необходим доступ к SharedLibrary. Старые разработчики решили этот очевидный запах кода, реплицируя функциональность бизнес-объектов в общей библиотеке (очень anti-DRY). Я потратил целый день, пытаясь прочитать о моих вариантах, чтобы решить эту проблему, но я нахожусь в тупике.
Я открыт для идеи реорганизации архитектуры, но только в крайнем случае. Итак, как я могу иметь библиотеку общих помощников, которая может обращаться к бизнес-объектам, а бизнес-объекты все еще обращаются к библиотеке общих помощников?