增加统一性';Prism Xamarin.Forms中的s诊断扩展
我得到一个Unity.ResolutionFailedException,它提示我可以通过添加诊断扩展来获得更多信息: Unity.ResolutionFailedException:有关详细信息,请添加诊断扩展:Container.AddExtension(新诊断()) 我尝试在App.xaml.cs的构造函数和RegisterTypes中添加扩展,但两种方法都不起作用(相同的消息)增加统一性';Prism Xamarin.Forms中的s诊断扩展,xamarin.forms,prism,unity-container,Xamarin.forms,Prism,Unity Container,我得到一个Unity.ResolutionFailedException,它提示我可以通过添加诊断扩展来获得更多信息: Unity.ResolutionFailedException:有关详细信息,请添加诊断扩展:Container.AddExtension(新诊断()) 我尝试在App.xaml.cs的构造函数和RegisterTypes中添加扩展,但两种方法都不起作用(相同的消息) public应用程序(IPlatformInitializer初始值设定项) :base(初始值设定项) {
public应用程序(IPlatformInitializer初始值设定项)
:base(初始值设定项)
{
this.Container.GetContainer().AddExtension(新诊断());
}
受保护的覆盖无效注册表类型(IContainerRegistry containerRegistry)
{
containerRegistry.GetContainer().AddExtension(新诊断());
...
关于这一点,它指出:
重要的
扩展方法在IUnityContainer接口上不起作用。它仅在UnityContainer本身上可用
这可以解释我看到的行为。那么是否可以添加诊断扩展
那么,是否可以添加诊断扩展
您可以直接转换到UnityContainer
:
using Prism.Unity; // for the GetContainer extension method
((UnityContainer)containerRegistry.GetContainer()).AddExtension(new Diagnostic());
或者,重写prismaplication.CreateContainerExtension
,并直接将扩展添加到容器中:
protected override IContainerExtension CreateContainerExtension()
{
var container = new UnityContainer();
container.AddExtension( new Diagnostic() );
return new UnityContainerExtension( container );
}
转换到UnityContainer似乎很简单,但我仍然得到相同的异常和语句来添加诊断扩展,而没有其他信息。这是您在项目中所做的吗?不要使用第一种方法…显示的第二种方法将是@Adam希望做的正确方法。事实上,我使用的是旧版本的prism不会试图隐藏容器。我的客户端受监管,无论如何都无法轻松更新任何第三方库。如果我对您答案的编辑(删除错误的位)获得批准,那就太好了,这样我就可以将其标记为解决方案。@Adam我看不到编辑,但我很乐意批准。您想删除什么?