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<>));