В этом вопросе о переполнении стека я узнал что Prism / Unity не так разделены, как я думал, например если у меня есть этот класс, который получает menuManager, вставленный в его конструктор, то я должен убедиться, что этот класс действительно где-то существует (я думал, что вы могли бы просто вытащить .dll который содержит класс, и контейнер будет обрабатывать его, например, вставив на его место нуль):
public class EmployeesPresenter
{
public EmployeesPresenter(IMenuManager menuManager)
{
}
}
Но я могу с этим справиться: приложение не может работать без MenuModule (или, как было предложено, я мог бы иметь NullMenuModule, который ничего не делает, кроме как предотвращает поломку приложения).
Однако приложение, которое я создаю, будет иметь класс MenuManager в MenuModule, и каждый модуль должен будет зарегистрировать все, что он хочет иметь в меню, с помощью MenuManager. Однако я хочу иметь возможность заменить MenuModules, например. иметь InfragisticsMenuModule и TelerikMenuModule и т. д.
Однако, когда я, например, CustomersModule, чтобы использовать TelerikMenuModule, мне нужно сослаться на него. И когда я хочу использовать InfragisticsMenuModule, мне нужно сослаться на это.
Итак, как я смогу выполнить "горячую замену" TelerikMenuModule с InfragisticsMenuModule без перекомпиляции всех моих модулей с новыми ссылками, например Я хочу заменить это:
Application.exe
Customers.dll
TelerikMenuModule.dll
с этим:
Application.exe
Customers.dll
InfragisticsMenuModule.dll
и просто иметь возможность перезапустить приложение, и оно будет работать с новым InfragisticsMenuModule.dll, и не жалуется на то, что TelerikMenuModule.dll больше не существует.