总目录


前言

本文介绍Asp.Net Core中默认的依赖注入(DI)模式。

环境

1.Visual Studio 2017
2.Asp.Net Core 2.2

开局

第一手:依赖注入说明

1.一个例子
主机和主机中硬盘,可以说主机中硬盘是主机的依赖项,若更换硬盘,需拆主机。
若将硬盘通过USB接口外接,那么只需将新硬盘接入USB口即可。
2.例子代码
 
 
3.控制反转(IoC)
 
 
 
 
控制反转:将依赖交给第三方容器管理。
控制反转与依赖注入的关系:控制反转是一种思想,依赖注入是控制反转的一种实现。
4.依赖注入(DI)
现在再回到Startup中看看Asp.Net Core中的依赖注入。
 
 
1.代码中这些均为依赖注入,这些由框架实现,以后源码解读时再做详述;
2.下面介绍Asp.Net Core自带的依赖注入框架对服务依赖的注册和使用。

第二手:依赖注入 - 注册服务

在Asp.Net Core中向容器中注册服务有三种方法,其区别在于生命周期不同:
- AddTransient:每次请求会获取一个新实例,即:每次GetService都会获取一个新实例
- AddScoped :每个请求会获取一个新实例,即:在一个请求内,每次GetService都会获得同一个实例
- AddSingleton:每次请求会获取同一个实例,即:在应用程序生命周期内,每次GetService都会获得同一个实例
 
 
 
 
 
 
所说的生命周期实际对应于类实例的创建时机,GetService实际是获取类的实例。
容器根据注册方式不同,判断是否需要创建新实例返回。

第一手:依赖注入 - 使用服务

1.Startup中使用
 
 
2.Controller构造函数注入
 
 
 
 
 
 
3.View注入
在Startup中的注册方式同Controller,这里只显示在View注入方式。
 
 
 
 

终局

本文介绍Asp.Net Core中默认的依赖注入(DI)模式,下局介绍读取配置文件,待续...

总目录

作者:dotNET之家
链接:https://www.jianshu.com/p/412f62ef55dc
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Asp.Net Core 第04局:依赖注入的更多相关文章

  1. ASP.NET Core中如影随形的”依赖注入”[下]: 历数依赖注入的N种玩法

    在对ASP.NET Core管道中关于依赖注入的两个核心对象(ServiceCollection和ServiceProvider)有了足够的认识之后,我们将关注的目光转移到编程层面.在ASP.NET ...

  2. [ASP.NET Core 3框架揭秘] 依赖注入:控制反转

    ASP.NET Core框架建立在一些核心的基础框架之上,这些基础框架包括依赖注入.文件系统.配置选项和诊断日志等.这些框架不仅仅是支撑ASP.NET Core框架的基础,我们在进行应用开发的时候同样 ...

  3. [ASP.NET Core 3框架揭秘] 依赖注入[5]: 利用容器提供服务

    毫不夸张地说,整个ASP.NET Core框架是建立在依赖注入框架之上的.ASP.NET Core应用在启动时构建管道以及利用该管道处理每个请求过程中使用到的服务对象均来源于依赖注入容器.该依赖注入容 ...

  4. [ASP.NET Core 3框架揭秘] 依赖注入[8]:服务实例的生命周期

    生命周期决定了IServiceProvider对象采用怎样的方式提供和释放服务实例.虽然不同版本的依赖注入框架针对服务实例的生命周期管理采用了不同的实现,但总的来说原理还是类似的.在我们提供的依赖注入 ...

  5. [ASP.NET Core 3框架揭秘] 依赖注入[10]:与第三方依赖注入框架的适配

    .NET Core具有一个承载(Hosting)系统,承载需要在后台长时间运行的服务,一个ASP.NET Core应用仅仅是该系统承载的一种服务而已.承载系统总是采用依赖注入的方式来消费它在服务承载过 ...

  6. [ASP.NET Core 3框架揭秘] 依赖注入[9]:实现概述

    <服务注册>.<服务消费>和<生命周期>主要从实现原理的角度对.NET Core的依赖注入框架进行了介绍,接下来更进一步,看看该框架的总体设计和实现.在过去的多个版 ...

  7. [ASP.NET Core 3框架揭秘] 依赖注入[7]:服务消费

    包含服务注册信息的IServiceCollection集合最终被用来创建作为依赖注入容器的IServiceProvider对象.当需要消费某个服务实例的时候,我们只需要指定服务类型调用IService ...

  8. [ASP.NET Core 3框架揭秘] 依赖注入[6]:服务注册

    通过<利用容器提供服务>我们知道作为依赖注入容器的IServiceProvider对象是通过调用IServiceCollection接口的扩展方法BuildServiceProvider创 ...

  9. [ASP.NET Core 3框架揭秘] 依赖注入[4]:一个Mini版的依赖注入框架

    在前面的章节中,我们从纯理论的角度对依赖注入进行了深入论述,我们接下来会对.NET Core依赖注入框架进行单独介绍.为了让读者朋友能够更好地理解.NET Core依赖注入框架的设计与实现,我们按照类 ...

随机推荐

  1. Waiter.js

    var Waiter = function() {     var dfd = [],         doneArr = [],         failArr = [],         slic ...

  2. pipenv虚拟环境

    虚拟环境 之前用的 virtualenv +virtualenvwrapper 今天在学习  flask 框架    用到了pipenv pipenv   Pipfile 文件是 TOML 格式而不是 ...

  3. ES6---new Promise()讲解,Promise对象是用来干嘛的?

    ES6---new Promise()讲解,Promise对象是用来干嘛的? :https://blog.csdn.net/Wbiokr/article/details/79490390

  4. P1613跑路

    题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟 ...

  5. oracle ALL视图

    select  *  from  ALL_ALL_TABLES  -- 用户可存取的所有表. select  *  from  ALL_BASE_TABLE_MVIEWS -- 用户可存取的所有物化视 ...

  6. Vue PC端图片预览插件

    *手上的项目刚刚搞完了,记录一下项目中遇到的问题,留做笔记: 需求: 在项目中,需要展示用户上传的一些图片,我从后台接口拿到图片url后放在页面上展示,因为被图片我设置了宽度限制(150px),所以图 ...

  7. 手模手配置Eslint,看懂脚手架中的Eslint

    使用ESLint前:eslint是干嘛的,我这样写有什么问题,怎么还报错了,太麻烦想去掉这个插件,脚手架中关于eslint文件里的配置是什么意思?怎么设置配置项和规则达到自己想要的检测效果呢?怎么集成 ...

  8. JS面向对象——动态原型模型、寄生构造模型

    动态原型模型 组合使用构造函数模型和原型模型,使得OO语言程序员在看到独立的构造函数和原型时很困惑.动态原型模型致力于解决该问题,它把所有的信息封装在构造函数中,通过在构造函数中初始化原型(仅在必要情 ...

  9. pychrome激活

    http://blog.csdn.net/fx677588/article/details/58164902

  10. 洛谷4721 【模板】分治 FFT

    传送门 久违的多项式全家桶= =+ 分治NTT 用的就是cdq分治的思想 对于当前递归到的区间[l,r] 我们处理出[l,mid]对[mid+1,r]答案的贡献 然后分治递归求解就可以啦qwq 这个贡 ...