IRequestNavigationService не создается экземпляр

В работающей программе я начал получать следующее исключение: Произошла ошибка активации при попытке получить экземпляр типа IRegionNavigationService

Внутренним исключением является InnerException {"Текущий тип, CommonServiceLocator.IServiceLocator, является интерфейсом и не может быть сконструирован. Вам не хватает сопоставления типов?"} System.Exception {System.InvalidOperationException}

Поскольку это часть платформы Prism 6, я не знаю, с чего начать решение проблемы.

Проблема началась, когда я обновлял проект из репозитория, и файл решения был поврежден. У меня есть программа для запуска, но когда я выбираю вариант перехода к другому представлению, я получаю исключение.

Вот код, который получает исключение:

public class MainMenuViewModel : BindableBase, IRegionManagerAware
{
    public IRegionManager RegionManager { get; set; }


    public MainMenuViewModel()
    {
        CustomerProfileCommand = new DelegateCommand(ExecuteCustomerProfileCommand);
        AdjustmentTypeCommand = new DelegateCommand(ExecuteAdjustmentTypeCommand);
        StreetProfileCommand = new DelegateCommand(ExecuteStreetProfileCommand);
        LocationMaintenanceCommand = new DelegateCommand(ExecuteLocationMaintenanceCommand);
    }

    private void ExecuteLocationMaintenanceCommand()
    {
        RegionManager.RequestNavigate(RegionNames.ContentRegion, NavigationNames.LocationMaintenance);
    }

    private void ExecuteStreetProfileCommand()
    {
        RegionManager.RequestNavigate(RegionNames.ContentRegion, NavigationNames.StreetMaintenance);
    }

    private void ExecuteAdjustmentTypeCommand()
    {
        RegionManager.RequestNavigate(RegionNames.ContentRegion, NavigationNames.AdjustmentTypeMaintenance);
    }

    private void ExecuteCustomerProfileCommand()
    {
        RegionManager.RequestNavigate(RegionNames.ContentRegion, NavigationNames.CustomerProfile);
    }

    public ICommand  CustomerProfileCommand { get; set; }
    public ICommand AdjustmentTypeCommand { get; set; }
    public ICommand StreetProfileCommand { get; set; }
    public ICommand LocationMaintenanceCommand { get; set; }
}

RegionManager создается поведением региона и (используя отладку для проверки) фактически создается.

Любое направление относительно того, с чего я должен начать, приветствуется.


person Ken    schedule 20.04.2018    source источник


Ответы (1)


Хорошо, я нашел проблему. Я обновил пакет CommonServiceLocator до версии 2.03. Судя по всему, Prism 6.30 работает только с версией 1.3.0. После внесения этого изменения программа заработала.

person Ken    schedule 20.04.2018
comment
Большой палец вверх за решение собственной проблемы. Также имейте в виду, что текущая версия Prism (7.0) поддерживает Unity 5. Однако одна из зависимостей Prism не была обновлена ​​для поддержки Unity 5, поэтому в целом вы также пока застряли на Unity 4.0. - person Adam Vincent; 27.04.2018
comment
Да, я в курсе о новой версии Prism, но информации по переходу с 6.3 не нашел. Так что пока держусь за то, что есть. - person Ken; 27.04.2018