Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 在prism中找不到记录器服务_Xamarin.forms_Prism - Fatal编程技术网

Xamarin.forms 在prism中找不到记录器服务

Xamarin.forms 在prism中找不到记录器服务,xamarin.forms,prism,Xamarin.forms,Prism,我的设置是: <PackageReference Include="Prism.DryIoc.Extensions" Version="7.2.0.1054" /> <PackageReference Include="Prism.Forms.Extended" Version="7.2.0.1054" /> <PackageReference Include="Shiny.P

我的设置是:

<PackageReference Include="Prism.DryIoc.Extensions" Version="7.2.0.1054" />
<PackageReference Include="Prism.Forms.Extended" Version="7.2.0.1054" />
<PackageReference Include="Shiny.Prism" Version="7.2.0.1054" />
当我尝试将服务分配给属性时,如下所示:

` Logger = provider.GetRequiredService<ILogger<AgentBase>>(); `

是否缺少任何配置?

在我的项目中,Dryioc是prism用于Di的主容器,但我的对象完全依赖于Microsoft Di,而且一些类必须从内部访问修饰符注册

prism团队不推荐使用Microsoft Di替换DryIOC,但有一个用于组合的扩展

最后,在将它们结合起来,并对内部类注册设置进行一些更改之后,它起到了作用

在主机生成器正确初始化后,错误也得到解决


谢谢

@habib不确定host Builder是如何导致此错误的,因为根据错误记录程序无法解决此问题。在使用Shiny.Prism时,可以使用ShinyStartup注册ILogger。您可以使用以下命令将记录器注册为open generic:

services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
services.AddSingleton(typeof(ILogger)、typeof(Logger));
或者,如果需要更多地控制ILogger的解析方式,可以使用Prism容器扩展中的委托注册


另外,你能分享一下这是如何链接到Host Builder的以及你的实现来解决它的吗?

我的对象完全依赖于Microsoft DI
你最好有一个很好的理由。。。这听起来像是一个非常糟糕的设计决策。这种依赖关系是必须的,因为nugget(对于应用程序中的某些功能),它使用builder模式来注册服务,并且在host builder启动期间使用iHost Service来自动启动某些服务。谢谢你的关注
`No service for type 'Microsoft.Extensions.Logging.ILogger`1[Hyperledger.Aries.Agents.AgentBase]' has been registered.`
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));