Регистрация модулей в Prism 7.1 - PullRequest
0 голосов
/ 29 сентября 2018

В Prism 7.1 интерфейс IModule изменился с версии 6.3 и теперь предоставляет два метода: RegisterTypes (IContainerRegistry containerRegistry) и OnInitialized (IContainerProvider containerProvider).Я прошу прощения, но я не могу понять, как я должен зарегистрировать представления, реализованные в модуле.это, наверное, так просто, что я не вижу решения проблемы.Можете ли вы дать мне пример, чтобы, наконец, заставить меня понять, как я должен делать?Куда бы я ни посмотрел, я нашел только примеры относительно версии 6.3, которую я знаю довольно хорошо ..

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Prism 7.X представляет абстракцию вокруг DI-контейнера.Для этого было несколько причин, но две главные из них:

  1. Многие вопросы поддержки от сообщества к команде Prism связаны с тем, как сделать что-то с контейнером, который не имеет ничего общего скоманда Prism.
  2. Абстрагируя контейнер, можно упростить сценарии совместного использования кода и замены контейнеров.

Также важно понимать, что абстрагируя контейнер, мы также сделалиизменения в Контейнерных Расширениях, ответственных за регистрацию Представлений.В частности, теперь у нас есть их на IContainerRegistry.Итак, приведенный пример модуля Prism 6.X здесь:

public class ModuleA
{
    private IUnityContainer _container { get; }

    public ModuleA(IUnityContainer container)
    {
        _container = container;
    }

    public void Initialize()
    {
        // register stuff
        _container.RegisterViewForNavigation<ViewA>();

        // Setup Event listeners etc...
        var ea = _container.Resolve<IEventAggregator>();
    }
}

Мы бы обновили его до:

public class ModuleA
{
    public void OnInitialized(IContainerProvider containerProvider)
    {
        // Setup Event listeners etc...
        var ea = containerProvider.Resolve<IEventAggregator>();
    }

    public void RegisterTypes(IContainerRegistry containerRegistry)
    {
        // register stuff
        containerRegistry.RegisterForNavigation<ViewA>();
    }
}
0 голосов
/ 29 сентября 2018

это, вероятно, настолько просто, что я не вижу решения проблемы

Просто используйте RegisterTypes - регистрация вида - это регистрация типа, в конце концов.

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