Почему DirectoryModuleCatalog загружает неправильный модуль? - PullRequest
0 голосов
/ 11 октября 2018

Я использую 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.

Вопрос:

Как я могу это исправить, и это правильное поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...