【.NET】依赖注入浅显解释

依赖注入 是一种设计模式,它将对象的依赖(例如服务或组件)从对象内部解耦出来,由外部提供。在 C# 中,通常通过 构造函数注入属性注入方法注入 来实现依赖注入。常用的 DI 容器如 Autofac 和 Microsoft.Extensions.DependencyInjection。
大白话: 假如一个类需要另外独立的功能,比如发送邮件,正常情况在这个类中创建发送邮件的类(也可以说依赖,主要是强调两者关系)

csharp 复制代码
public class OrderService
{
    private readonly Logger _logger = new Logger(); // 直接创建依赖
}

但是这样操作耦合性高,比如现在想修改 Logger(),改成FileLogger,那么就需要修改OrderService。

此时使用依赖注入,如下代码

csharp 复制代码
public class OrderService
{
    private readonly ILogger _logger;

    public OrderService(ILogger logger)
    {
        _logger = logger;
    }
}
csharp 复制代码
// 使用
class Program
{
    static void Main()
    {
        ILogger logger = new ConsoleLogger();  //如果想改成其他的类,直接在这里替换掉就可以,无需改动OrderService 内部代码
        OrderService service = new OrderService(logger);
        service.CreateOrder("123");
    }
}

将logger作为一个参数传过来,那么无论logger怎么改动,都不需要改OrderService(耦合度低),这就是构造函数注入。属性注入(定义一个参数)和方法注入(作为方法参数传进来)类似。

完结撒花~

相关推荐
Ricky_Theseus1 小时前
Trie 字典树:前缀匹配利器
开发语言·c#
北域码匠15 小时前
嵌入式限幅滤波:工业信号降噪利器
c#·传感器采集·数据预处理·嵌入式算法·限幅滤波·数字滤波·数据降噪
长孙豪翔18 小时前
在.net中读写config文件的各种方法
java·数据库·.net
GV191rLvq1 天前
查看w3wp进程占用的内存及.NET内存泄露,死锁分析
.net
csdn_aspnet1 天前
C# 提取、截取或匹配字符串内包含指定字符的一些方法分享
c#·字符串·正则·分割·提取·匹配
枳实-叶1 天前
【Linux驱动开发】第23天:spi_driver 的 probe / remove 函数实现规范
linux·驱动开发·c#
长明1 天前
C#项目组织与概念梳理
后端·c#
界面开发小八哥1 天前
界面控件DevExpress .NET Reports v26.1新版亮点 - 持续增强可访问性
.net·界面控件·devexpress·ui开发·报表控件
迷路爸爸1801 天前
Python collections 入门+实战
windows·python·c#·collections·dict
csdn_aspnet1 天前
C# 截取或匹配字符串内包含指定字符的一些方法
c#·字符串·分割·string·匹配·截取