博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
依赖注入
阅读量:5038 次
发布时间:2019-06-12

本文共 1095 字,大约阅读时间需要 3 分钟。

1、什么是依赖注入(DI)

依赖:当一个类需要另一个类协助来完成工作的时候就产生依赖,这个在开发过程中十分常见,如下图所示,这是一个依赖于抽象的例子。

注入:我们只使用依赖项,不负责创建依赖项,依赖由别人注入的过程,我们看例子,由调用者将依赖项传入。

public AccountController(ILoginService
loginService){ _loginService = loginService;}

setter注入构造注入两种。上面例子就是构造注入,官方推荐构造函数注入。

控制反转(IOC):为了在业务变化的时候尽少的因修改代码造成的问题。

容器:统一管理系统中所有的依赖,负责绑定服务个实例之间的关系和获取实例,并对实例进行管理。

2、Dotnet core依赖注入(DI)

在.NET Core中DI的核心分为两个组件:IServiceCollection和 IServiceProvider。
  • IServiceCollection 负责注册
  • IServiceProvider 负责提供实例

 通过默认的 ServiceCollection注册(在Microsoft.Extensions.DependencyInjection命名空间下)有三个方法:

var serviceCollection = new ServiceCollection()

  
.AddTransient<ILoginService, LoginService>()
  
.AddSingleton<ILoginService, LoginService>()
  
.AddScoped<ILoginService, LoginService>();

这个三分方法有不同的生命周期

  • Transient: 每一次GetService都会创建一个新的实例
  • Scoped:  在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http request会在一个 scope内)*
  • Singleton :整个应用程序生命周期以内只创建一个实例 

如何替换为其他的IOC容器

Autofac是个不错的选择,.NET Core默认的实现对于一些小型的项目完全够用,甚至大型项目麻烦点也能用,但是会有些麻烦,原因在于只提供了最基本的AddXXXX方法来绑定实例关系,需要一个一个的添加。如果项目可能要添加好几百行这样的方法。

 

转载于:https://www.cnblogs.com/MirZhai/p/10323565.html

你可能感兴趣的文章
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>
Web前端从入门到精通-9 css简介——盒模型1
查看>>
Activity和Fragment生命周期对比
查看>>
OAuth和OpenID的区别
查看>>
android 分辨率自适应
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
国外媒体推荐的5款当地Passbook通行证制作工具
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
hibernate生成表时,有的表可以生成,有的却不可以 2014-03-21 21:28 244人阅读 ...
查看>>
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>
1.jstl c 标签实现判断功能
查看>>