.net core依赖注入小结

#依赖注入介绍
.net core 中依赖注入是必不可少的一项必学内容,官方介绍为:依赖注入是一种软件设计模式,指一个或多个依赖(或服务)被注入,或通过引用传递,传入一个依赖对象(或客户端)并成为客户状态的一部分。该模式通过自身的行为分离了客户依赖的创建,允许程序设计是松耦合的,同时遵循依赖倒置和单一职责原则。与服务定位器模式直接进行对比,并允许客户了解他们用来查找依赖的机制。
以上是官方的说法,这里补充一下我个人的看法。当然依赖注入的方式有两个,一个是服务注入,另一个是EF注入,目前只了解了服务注入。
##依赖
当一个类需要另一个类协作来完成工作的时候就产生了依赖,使用接口或基类将依赖关系实现抽象化。
将服务注入到使用它的类的构造函数中。 框架负责创建依赖关系的实例,并在不再需要时将其释放。
比如我们在HomeController这个类中需要完成登录的时候,需要我们通过实现另外一个接口ILogin来完成,那这时候HomeC ontroller就可以依赖于ILogin。这里有一个设计原则:依赖于抽象,而不是具体的实现。临时写了一个简易demo,业务不通别见怪。。可能直接上代码好理解一点:

###HomeController

 public class HomeController : Controller{private readonly ILogin _login;//构造函数注入的方式注入public HomeController(ILogin login)//依赖于ILogin{_login= login;}public string Login(){return _login.GetLogin("xjm1").UserName;}}

###ILogin(登录接口)

 ///定义登录接口public interface ILogin {User GetLogin(string UserName);}

###MockLogin(接口实现类)

    ///ILogin的实现类public class MockLogin: ILogin {private List<User> _user;//初始化一些基本用户信息public MockLogin(){_user= new List<User>(){new User(){ UserName = "xjm1",PassWord= "1111",E_mail = "xjm1@126.com"},new User(){ UserName = "xjm2",PassWord= "2222",E_mail = "xjm2@126.com"},new User(){ UserName = "xjm3",PassWord= "3333",E_mail = "xjm3@126.com"}};}public User GetLogin(string UserName){return _user.FirstOrDefault(a => a.UserName == UserName);}}

###User(用户信息实体类)

 ///用户信息实体类public class User{//public int Id { get; set; }public string UserName { get; set; }public string PassWord{ get; set; }public string E_mail { get; set; }}

##注册服务
服务容器中注册依赖关系。 ASP.NET Core 提供了一个内置的服务容器 IServiceProvider。 服务通常已在应用的 Startup.ConfigureServices 方法中注册。(绑定业务接口与实现类)

       public void ConfigureServices(IServiceCollection services){services.AddMvc();services.AddSingleton<ILogin ,MockLogin>();//services.AddScoped<ServerInterface, ServerTest1>();       //每次请求,都获取一个新的实例,同一个请求获取多次会得到相同的实例。//services.AddTransient<ServerInterface, ServerTest1>();    //每次请求,都获取一个新的实例,即使同一个请求获取多次也会是不同的实例//services.AddSingleton<ServerInterface, ServerTest1>();    //单例模式,每次都获取同一个实例(和静态类几乎一样)}

##启动Home

     public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseStaticFiles();app.UseMvc(routes =>{routes.MapRoute(name: "default",template: "{controller=Home}/{action=Login}/{id?}");});app.Run(async (context) =>{await context.Response.WriteAsync("testdemo!");});}

其实这些东西很早很早之前就已经接触了,奈何现在重拾,点滴积累,做个笔记,道友共勉~~

.net core依赖注入相关推荐

  1. everythingtoolbar.dll”或它的一个依赖项。_ASP.NET Core依赖注入最佳实践、提示和技巧...

    译者前言 本文译自ABP框架的开发博客<ASP.NET Core Dependency Injection Best Practices, Tips & Tricks>一文(原作者 ...

  2. 探索 .NET Core 依赖注入的 IServiceProvider

    在上一篇文章中,我们学习了Microsoft.Extensions.DependencyInjection中的IServiceCollection,包括服务注册转换为ServiceDescriptor ...

  3. ASP.NET Core依赖注入最佳实践,提示技巧

    分享翻译一篇Abp框架作者(Halil İbrahim Kalkan)关于ASP.NET Core依赖注入的博文. 在本文中,我将分享我在ASP.NET Core应用程序中使用依赖注入的经验和建议. ...

  4. ASP.NET Core依赖注入深入讨论

    这篇文章我们来深入探讨ASP.NET Core.MVC Core中的依赖注入,我们将示范几乎所有可能的操作把依赖项注入到组件中. 依赖注入是ASP.NET Core的核心,它能让您应用程序中的组件增强 ...

  5. ASP.NET Core依赖注入容器中的动态服务注册

    介绍 在ASP.NET Core中,每当我们将服务作为依赖项注入时,都必须将此服务注册到ASP.NET Core依赖项注入容器.但是,一个接一个地注册服务不仅繁琐且耗时,而且容易出错.因此,在这里,我 ...

  6. .Net Core 依赖注入

    .Net Core 依赖注入 为什么要使用依赖注入框架 .Net Core DI 核心类 三种生命周期 服务注册 单例注册 作用域注册 瞬时注册 直接注入实例 工厂模式注册 注册不同实例 尝试注册 移 ...

  7. 【ASP.NET Core】ASP.NET Core 依赖注入

    一.什么是依赖注入(Denpendency Injection) 这也是个老身常谈的问题,到底依赖注入是什么? 为什么要用它? 初学者特别容易对控制反转IOC(Iversion of Control) ...

  8. 一文读懂Asp.net core 依赖注入(Dependency injection)

    一.什么是依赖注入 首先在Asp.net core中是支持依赖注入软件设计模式,或者说依赖注入是asp.net core的核心: 依赖注入(DI)和控制反转(IOC)基本是一个意思,因为说起来谁都离不 ...

  9. 全面理解 ASP.NET Core 依赖注入

    DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET  Core的DI实现以及对实例 ...

最新文章

  1. 什么叫做多媒体计算机技术,多媒体计算机系统是什么
  2. tcp/ip 协议栈Linux源码分析一 IPv4分片报文重组分析一
  3. springboot-cache的简单使用
  4. C 语言的可变参数表函数的设计
  5. [转]Eclipse+pydev 常用快捷键
  6. Ubuntu Touch未来支持对用户数据加密
  7. 比特率 波特率 带宽与容量
  8. C++ Primer Plus学习:第十三章
  9. win10系统更新后打开chrome浏览器几秒后自动闪退
  10. T32:第一次出现的字符
  11. 是否应该删除Windows 7 Service Pack备份文件以节省空间?
  12. Java大作业——手把手教你写俄罗斯方块
  13. 电脑快捷方式删除文件后四种找回方法
  14. C#卸载程序需要密码/防卸载功能
  15. 最近使用的一款session工具:sa-Token
  16. 7-1 厘米换算英尺英寸 (15 分)
  17. 网站防御cdn和高防服务器,高防IP和高防CDN哪个防护更好?
  18. 搭建jenkins共享库使用Jenkins Shared Library
  19. From表单的属性action和method
  20. 普希金:假如生活欺骗了你

热门文章

  1. 安利【1】-PDF翻译工具
  2. 网络安全防护措施有哪些?
  3. 基于PCI接口的数据采集卡!(第一次做的板卡)
  4. 共享经济商业模式的六大优势六大特征与面临的挑战
  5. IC验证培训——实战SV验证学习(lab6)
  6. Flask中的session简易用法教程,以及permanent通俗解释
  7. 2020江苏选调考察体检环节的记录
  8. Android工程师应该具备的四大开发习惯
  9. linux-守护进程和线程
  10. 手机SD卡的检测方法