在棱镜中找不到记录器服务 [英] Logger service not found in prism

查看:65
本文介绍了在棱镜中找不到记录器服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的设置是:

<预><代码>protected override void RegisterTypes(IContainerRegistry containerRegistry){containerRegistry.RegisterServices(services =>{services.AddLogging();}}

当我尝试将服务分配给如下属性时:

` Logger = provider.GetRequiredService>();`

发生此错误:

`没有注册'Microsoft.Extensions.Logging.ILogger`1[Hyperledger.Aries.Agents.AgentBase]'类型的服务.`

是否缺少任何配置?

解决方案

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

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

最终在将它们结合起来并在内部类注册的 Dryioc 设置中进行了一些更改后,它起作用了.

Host Builder 正确初始化后也解决了错误.

谢谢

My setup is :

<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" />


 protected override void RegisterTypes(IContainerRegistry containerRegistry)
     {
         containerRegistry.RegisterServices(services => 
            {
                services.AddLogging();
             }
      }

and when i try to get service to assign to property as below :

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

This error happens :

`No service for type 'Microsoft.Extensions.Logging.ILogger`1[Hyperledger.Aries.Agents.AgentBase]' has been registered.`

is there any missing config ?

解决方案

In my project Dryioc is the main container that prism use for Di but my objects are completely depend on Microsoft DI, also some of class must registered from internal access modifier.

Replacing DryIOC with Microsoft Di not recommended by prism team, but there is an extension for combining .

finally after combining them and some change in dryioc setting for internal class registration, it worked .

Also error was solved after Host Builder correct initialization.

Thankyou

这篇关于在棱镜中找不到记录器服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆