在棱镜应用程序中使用Microsoft Dependency Injection的regionmanager中没有区域7.2

问题描述

我正在将Prism v7.2.0.1422用于带有.net Core 3.1的WPF应用程序。 我正在使用Microsoft Dependency Injection for 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);
            }             
            
        }

布尔值requireRebuild销毁容器内的所有实例。

Prism v7.2.0.1422。 .net Core 3.1 Prism.Container.Extensions v7.2.0.54。

解决方法

当前不支持此功能。如果您回顾DryIocUnity的Prism 7.2源代码,您会发现还有一些额外的容器工作无法在PrismContainerExtensions中抽象出来。具体来说,您需要创建ServiceLocatorAdapter。

Prism 8的要求消失了,但是我还没有时间更新Prism 8的Prism容器扩展,并且直到下一次Prism 8预览之后才开始。同时,我建议在GitHub上发布一个问题,以跟踪WPF对Microsoft.Extensions.DependencyInjection容器的支持。