首页 > 编程语言 >C#中 控制反转IOC与依赖注入DI

C#中 控制反转IOC与依赖注入DI

时间:2024-04-15 21:56:01浏览次数:23  
标签:依赖 请求 DI C# 注入 IOC 构造函数

一、IOC与DI的关系

  • IOC即控制反转,用来管理项目中对象的生命周期和依赖关系,DI依赖注入,用来实现IOC,IOC是思想,DI是实现,在项目中通常一起出现,像是A类调用B类的方法,IOC容器资源给予对应资源,有助于实现依赖倒置DIP

二、DI常用的注入方式(.net的DI默认的是构造函数定义)

  • 构造函数注入:构造器注入就是在构造函数中借助参数将依赖的对象注入到创建的对象之中
  • 属性注入:通过在组件中定义公共属性,并通过容器将依赖项直接注入到这些属性上
  • 方法注入:体现依赖关系的字段或者属性可以通过方法的形式初始化

三、生命周期

  • 单例:服务在第一次请求时被创建,其后的每次请求将沿用已创建服务
  • 作用域:一次请求开始到请求结束 ,这次请求中获取的对象都是同一个
  • 瞬时:每一次获取的对象都不是同一个

标签:依赖,请求,DI,C#,注入,IOC,构造函数
From: https://www.cnblogs.com/wuchilaozeicc/p/18136945

相关文章

  • rsync
      常用选项-v :Verbose(try-vvformoredetailedinformation)#详细模式显示-e "sshoptions":specifythesshasremoteshell#指定ssh作为远程shell-a :archivemode#归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD-r(--recursive)......
  • react native调试相关技巧
    ReactNative的Debug基础:https://reactnative.dev/docs/next/debugging   调出开发菜单DevMenu。cmd+D或Device->Shake   在DevMenu上可以选择“ShowElementInspector”,显示UI上的组件,但是这是直接在app上显示,不清楚,最好在DevTools上来查看元素。 ......
  • SystemVerilog -- 6.0 Interface
    SystemVerilogInterfaceWhatisanInterface?Interface是一种将信号封装到block中的方法。所有相关信号组合到一起形成一个接口块,以便可以将其重新用于其他项目。此外,与DUT和其它验证组件的连接也变的更加容易。interfaceExampleAPB总线协议信号被放在给定的接口中。......
  • P4298 [CTSC2008] 祭祀 题解
    P4298[CTSC2008]祭祀题解给定DAG,求最长反链长度,最长反链方案,有多少个点可以成为反链上的点。Case1熟知Dilworth定理:偏序集的最长反链的长度等于最小链划分。因为偏序集有传递性,所以我们也需要对DAG做一遍传递闭包。这样可以套用Dilworth定理,最小链划分等于点数减......
  • Codeforces 1487F Ones
    考虑令\(l=|n|\),最高位为第\(1\)位,最低位为第\(l\)位。考虑选了一个\(\pm\underbrace{11\cdots11}_{i}\),那么显然会对\(l-i+1\siml\)位都有影响。于是能够知道第\(i\)位只有可能由\(<i\)的位影响。便可以考虑由高位到低位依次考虑,假设到了第\(i\)位。首......
  • ChromeDriver高版本下载
    chromedriver下载chromedriver114版本及以下的下载仓库地址:https://chromedriver.storage.googleapis.com/index.html chromedrvier从115版本开始从以前默认的仓库变成了新的地址发布:https://googlechromelabs.github.io/chrome-for-testing 新发布地址默认只列出......
  • CF1198E Rectangle Painting
    传送门题意:\(10^9\times10^9\)的白色平面上,给定\(m\le50\)个矩形将其涂黑。每次可以选\(\min(h,w)\)的代价将一个\(h\timesw\)的矩形涂白,问涂成全白的最小代价。可以看作每次涂一整条或一整列。如果不是\(10^9\)的范围,可以直接上二分图最小点覆盖了。但是这里我......
  • 地铁查询系统Android,MainActivity
    packagecom.example.metro_info_front_end;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.ArrayAdapter;importandroid.widget.AutoCompleteTextView;importandroid.widget.Button;importandroid.widget.LinearLayout;importandroid......
  • MIT6.S081 - Lecture1: Introduction and Examples
    课程简介课程目标理解操作系统的设计和实现通过XV6操作系统动手实验,可以扩展或改进操作系统操作系统的目标Abstraction:对硬件进行抽象Multiplex:在多个应用程序之间共用硬件资源Isolation:隔离性,程序出现故障时,不同程序之间不能相互干扰Sharing:实现共享,如数据交互或协......
  • 2、Oracle Select语句
    最近项目要用到Oracle,奈何之前没有使用过,所以在B站上面找了一个学习视频,用于记录学习过程以及自己的思考。视频链接:【尚硅谷】Oracle数据库全套教程,oracle从安装到实战应用如果有侵权,请联系删除,谢谢。1、SQL基础介绍SQL的全程是:structurequerylanguage。SQL语句分为以......