加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

.net core DI 注册 Lazy<> 类型

发布时间:2021-05-20 09:41:04 所属栏目:大数据 来源: https://www.cnblogs.com/szw
导读:? ? 当我们在 .net core (2.1) 中运行如下代码注入 LazyT 变量的时候: public AccountService(LazyIHttpContextAccessor httpContextAccessor){} ? ? ? 可能会遇到这样的错误提示: InvalidOperationException: Unable to resolve service for type 'System

? ? 当我们在 .net core (2.1) 中运行如下代码注入 Lazy<T> 变量的时候:

public AccountService(Lazy<IHttpContextAccessor> httpContextAccessor)
{
}

?

? ? 可能会遇到这样的错误提示:

InvalidOperationException: Unable to resolve service for type 'System.Lazy`1[Microsoft.AspNetCore.Http.IHttpContextAccessor]' while attempting to activate 'Senparc.Service.AccountService'.

?

? ? 原因在于系统没有办法识别 Lazy<T> 类型的依赖注入条件,我们可以在 Startup.cs 中的?public void ConfigureServices(IServiceCollection services) 方法中加入如下粗体代码使之生效:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();//默认会有
            services.AddTransient(typeof(Lazy<>));注册Lazy
        }

?

? ? Lazy<T> 是一个非常好的延迟加载的特性,可以在使用到该变量的时候才真正进行参数实例化和一系列控制反转的操作。因为通常我们某一个Service中可能只有一部分的方法需要用到某个变量,但是这个变量又需要在构造函数中依赖注入,此时 Lazy<T> 将帮助提升效率。

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读