Я использую Prism 6.3.0 и Unity DI для моего приложения WPF.Основное приложение и модуль были созданы с помощью расширения шаблона для Visual Studio, а Bootstrapper был изменен для использования DirectoryModuleCatalog.
Bootstrapper:
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
protected override IModuleCatalog CreateModuleCatalog()
{
DirectoryModuleCatalog catalog = new DirectoryModuleCatalog() { ModulePath = @".\Modules" };
return catalog;
}
}
Мой модуль:
public class Module1Module : IModule
{
private IRegionManager _regionManager;
private readonly ILoggerFacade _logger;
private IUnityContainer _container;
public Module1Module(IUnityContainer container, IRegionManager regionManager, ILoggerFacade logger)
{
_container = container;
_regionManager = regionManager;
_logger = logger;
}
public void Initialize()
{
_container.RegisterTypeForNavigation<ViewA>();
_logger.Log("BBC",Category.Debug,Priority.High);
}
}
Когда я компилирую основное приложение и модуль, модуль загружается из указанного пути модуля.
Проблема:
Когда я делаю копию скомпилированного модуля (Assembly / DLL), расположенного в ModulePath, в MainApplicationdirectory, внесите изменения в код модуля следующим образомниже, скомпилируйте модуль и скопируйте новые скомпилированные файлы в указанный Modulepath (. \ Modules), затем я вижу в журнале «BBC», означает, что модуль из каталога MainApplication загружен, а не из ModulesPath.
public class Module1Module : IModule
{
private IRegionManager _regionManager;
private readonly ILoggerFacade _logger;
private IUnityContainer _container;
public Module1Module(IUnityContainer container, IRegionManager regionManager, ILoggerFacade logger)
{
_container = container;
_regionManager = regionManager;
_logger = logger;
}
public void Initialize()
{
_container.RegisterTypeForNavigation<ViewA>();
_logger.Log("123",Category.Debug,Priority.High);
}
}
Ожидаемый результат:
Каталог каталогов модуля должен использовать указанный путь для загрузки модуля, а не из MainApplicationpath.
Вопрос:
Как я могу это исправить, и это правильное поведение?