首页 > 其他分享 >16_依赖注入的三种方法

16_依赖注入的三种方法

时间:2024-03-04 23:22:50浏览次数:36  
标签:依赖 属性 16 serviceB serviceD 三种 注入 public 构造函数

依赖注入(DI)的三种常见方法

  1. 构造函数注入:这是最常用的注入方式,它通过类的构造函数传递依赖对象。
  2. 方法注入:依赖对象通过类的方法传递,而不是在构造时。
  3. 属性注入:依赖对象直接设置到类的属性上。这种方式不是所有DI容器都支持,但一些容器如Autofac支持。

下面是一个简单的代码示例来说明这些概念:

// 构造函数注入
public class ServiceA
{
    private readonly IServiceB _serviceB;

    public ServiceA(IServiceB serviceB)
    {
        _serviceB = serviceB;
    }
}

// 方法注入
public class ServiceC
{
    private IServiceD _serviceD;

    public void Initialize(IServiceD serviceD)
    {
        _serviceD = serviceD;
    }
}

// 属性注入(示例使用Autofac支持的属性注入)
public class ServiceE
{
    public IServiceF ServiceF { get; set; }
}

在这些示例中:

  • ServiceA 类通过构造函数接收 IServiceB 的实例。
  • ServiceC 类通过 Initialize 方法接收 IServiceD 的实例。
  • ServiceE 类有一个公开的 ServiceF 属性,可以被Autofac等支持属性注入的DI容器设置。

标签:依赖,属性,16,serviceB,serviceD,三种,注入,public,构造函数
From: https://www.cnblogs.com/cookie2030/p/18053002

相关文章

  • 15_依赖注入和控制反转
    依赖注入和控制反转在.NET中,依赖注入(DI)是一种技术,用于实现控制反转(IoC),它允许将类的依赖关系通过构造函数、方法或属性来注入。这样可以提高代码的模块化和可测试性。IServiceCollection是一个服务集合,用于注册应用程序中的服务和组件。这些服务之后可以通过IServic......
  • C++网上购书系统项目的二次开发 2252416 hzx
    1、来源:同学大二下的期末大作业:网上购书系统项目。2、运行环境:VisualStudio2019代码:点击查看代码#include"StdAfx.h"#include<iostream>#include"person.h"#include<string.h>#include"globalfunction.h"#include"book.h"#include"adm.h&......
  • 快速排序的三种实现及简单优化(内附代码实现)
    概念​ 先贴一段百度:快速排序采用的是分治思想,即在一个无序的序列中选取一个任意的基准元素key,利用key将待排序的序列分成两部分,前面部分元素均小于或等于基准元素,后面部分均大于或等于基准元素,然后采用递归的方法分别对前后两部分重复上述操作,直到将无序序列排列成有序序列。步......
  • Educational Codeforces Round 162 E 点分治 虚树 树形dp
    传送门给出\(n\le2\cdot10^5\)的一棵树,每个节点有一个颜色。求出路径长度为\(2\)路径首端和尾端拥有相同颜色,且路径上其他点不存在相同颜色的点的路径条数。当时看错题了,把颜色抽出来后没法做了。后来感觉能点分治,然后把题看对了,遂写了一个极其抽象的点分治。除此之外,把某......
  • 提供[vCPE]BCM88312BA0KF12G芯片,BCM6816IFSB[GPON SOC],BCM6802FKFSBGR MoCA 2.0以太网
    1、BCM88312是一种集成化可编程设备,可实现与运营商网络的无缝对接,以提供vCPE服务。BCM88312基于博通的OpenFlow-DataPlaneAbstraction(OF-DPA)层框架,通过OpenFlow进行管理,从而将OF-DPA从基础架构内核一直扩展至企业CPE接入。器件:BCM88312BA0KF12G类型:vCPE芯片封装:BGA主要特性•......
  • 使用 Gradle 构建包含所有依赖的 JAR 包
    在Gradle中构建一个包含所有依赖的jar包(通常被称为“fatjar”或者“uberjar”),你可以使用shadowJar插件来包含编译的类和依赖。这里是一个基本的例子,使用shadowJar插件:首先,在你的build.gradle文件中引入shadowJar插件:plugins{id'java'id'com.githu......
  • 洛谷题单指南-二分查找与二分答案-P1163 银行贷款
    原题链接:https://www.luogu.com.cn/problem/P1163题意解读:利率越小,贷款期限和每个月还的钱固定的情况下,越有可能能够还完全部的贷款,具备单调性,因此给定贷款利率、贷款月数、每月还款钱数,可以计算最终贷款还剩下多少,有两种情况:>=0,说明利率可能大了,要试探更小利率;<0,说明利率小了,要......
  • Maven / Gradle 依赖管理
    向你的Maven/Gradle项目添加依赖的过程可分为如下几步:搜索依赖搜索你要安装的依赖,比如你需要MySQLConnector/J,可以在谷歌搜索“MySQLConnector/Jmaven”(在你需要的依赖名后面加上“maven”),这样谷歌会为你推荐MavenRepository(mvnrepository.com)的结果,我们大部分依......
  • 16 Educational Codeforces Round 142 (Rated for Div. 2)C. Min Max Sort(递归、思维
    C.MinMaxSort很不错的一道题目,不过脑电波和出题人每对上,\(qwq。\)正难则反。我们考虑最后一步是怎么操作的。最后一步一定是对\(1\)和\(n\)进行操作那么上一步呢?上一步应该是对\(2\)和\(n-1\)以此类推第一步应该是对\(\frac{n}{2}\)和\(\frac{n}{2}+1\)我们的答案应该......
  • vs工具dumpbin查看依赖的lib、dll
    转载:https://blog.csdn.net/weixin_34910922/article/details/109320939?spm=1001.2101.3001.6650.11&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-11-109320939-blog-104154281.pc_relevant_aa&depth_1-utm_source=distribute.pc_relev......