#c# #wpf #.net-core-3.1 #prism-7
#c# #wpf #.net-core-3.1 #prism-7
Вопрос:
Я использую Prism v7.2.0.1422 для приложения WPF с .net Core 3.1. Я использую внедрение зависимостей Microsoft для DI.
Я не хочу использовать контейнер Unity. regionAdapterMappings пуст. Обнаружение вида и внедрение представления не работают. что мне нужно, чтобы иметь возможность регистрировать регионы в RegionManager?
MyPrismApplication.cs
public abstract class MyPrismApplication : PrismApplicationBase
{
protected override IContainerExtension CreateContainerExtension()
{
return PrismContainerExtension.Current;
}
protected override void RegisterRequiredTypes(IContainerRegistry containerRegistry)
{
base.RegisterRequiredTypes(containerRegistry);
containerRegistry.RegisterSingleton<IRegionNavigationContentLoader, RegionNavigationContentLoader>();
containerRegistry.RegisterSingleton<IServiceLocator, MicrosoftServiceLocatorAdapter>();
}
protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings)
{
base.ConfigureRegionAdapterMappings(regionAdapterMappings);
//Fix bug when RegionAdapterMappings are not registered into dependency container
PrismContainerExtension.Current.RegisterInstance(regionAdapterMappings);
}
}
логическое значение requireresebuild уничтожает все экземпляры внутри контейнера.
Prism v7.2.0.1422. .net Core 3.1 Prism.Контейнер.Расширения версии 7.2.054.
Ответ №1:
В настоящее время это не то, что поддерживается из коробки. Если вы посмотрите на исходный код Prism 7.2 либо для DryIoc, либо для Unity, вы увидите, что существует некоторая дополнительная работа с контейнером, которая не может быть абстрагирована в расширениях prismcontainer. В частности, вам нужно будет создать ServiceLocatorAdapter.
Это требование отменяется для Prism 8, однако у меня не было времени обновить расширения контейнера Prism для Prism 8 и не будет до следующего предварительного просмотра Prism 8. В то же время я предлагаю открыть выпуск на GitHub, чтобы отслеживать поддержку WPF для Microsoft.Расширения.Контейнер DependencyInjection.
Комментарии:
1. спасибо, но я уже внедрил ServiceLocatorImplBase.