如何解决在棱镜应用程序中使用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。
解决方法
当前不支持此功能。如果您回顾DryIoc或Unity的Prism 7.2源代码,您会发现还有一些额外的容器工作无法在PrismContainerExtensions中抽象出来。具体来说,您需要创建ServiceLocatorAdapter。
Prism 8的要求消失了,但是我还没有时间更新Prism 8的Prism容器扩展,并且直到下一次Prism 8预览之后才开始。同时,我建议在GitHub上发布一个问题,以跟踪WPF对Microsoft.Extensions.DependencyInjection容器的支持。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。