Я не эксперт по этой теме, причина, по которой я нашел ваше сообщение, в том, что я искал помощи по аналогичной проблеме, но я думаю, что, возможно, есть некоторое совпадение между нашими проблемами, и, возможно, тем, что я попытка до сих пор может помочь вам или указать направление, которое может дать вам некоторый прогресс.
Если вы хотите увидеть все, что я написал, включая некоторые диаграммы, вы можете найти их здесь:
Используя StructureMap, одна из этих проектных организаций лучше другой?
Если есть лучший ответ, надеюсь, кто-то укажет на него, и я тоже буду учиться на этом.
В принципе, я думаю, у вас есть пара вариантов.
Вы можете объединить ваш загрузчик и MainApp в одном проекте. (как вы сказали, это кажется "неправильным")
Вы можете переместить код из MainApp, который необходим BootLoader, в другую сборку, а затем сослаться на него как из BootLoader, так и из MainApp.
Вы можете удалить свою ссылку из MainApp в BootLoader, а затем использовать посмотреть, есть ли другие способы автоматического получения ссылки на BootLoader во время выполнения с использованием Unity. Я использую StructureMap, в котором есть функция, позволяющая сканировать некоторые сборки (при запуске приложения), а затем вы можете сказать ему, чтобы он применял «соглашения по умолчанию», что означает, что существует интерфейс с именем IWhothing и класс Независимо от того, что: IWh независимо, тогда это автоматически настроит это так, прося экземпляр IW, который даст вам конкретный пример Whither.
Таким образом, вы можете иметь ссылку на BootLoader MainApp во время компиляции, но при этом иметь код в MainApp, который может обращаться к материалам в BootLoader во время выполнения (с помощью IOC и через интерфейс).
Надеюсь, это поможет.