杨中科 .Net Core 笔记 DI 依赖注入2

复制代码
ServiceCollection services = new ServiceCollection();//定义一个承放服务的集合
services.AddScoped<iGetRole, GetRole>();

using (ServiceProvider serviceProvider = services.BuildServiceProvider())
{

    var list = serviceProvider.GetServices(typeof(iGetRole));
    //获取到所有注册iGetRole类的实现对象

    foreach (var item in list)
    {

    }

}

    var list = serviceProvider.GetServices(typeof(iGetRole));//如果获取不到 则返回null
    var t = serviceProvider.GetRequiredService<iGetRole>();//如果获取不到 则抛出异常

DI注入方式

默认:构造函数注入;属性注入;


自动注入示例:

复制代码
public class MailKitService : IMailKitService
{
    private readonly ILogService _logService;
    private readonly IConfigService _configService;


    public MailKitService(ILogService _logService, IConfigService _configService)
    {
        this._logService = _logService;
        this._configService = _configService;

    }

    public void SendMail(string address, string copyAddress, string title, string content)
    {

        _logService.LogInfo($"发送地址:{address}");

        throw new NotImplementedException();
    }
}


ServiceCollection services = new ServiceCollection();

services.AddScoped<IConfigService, ConfigService>();
services.AddScoped<ILogService, LogService>();
services.AddScoped<IMailKitService, MailKitService>();


using (var provider = services.BuildServiceProvider())
{
    var mailService = provider.GetRequiredService<IMailKitService>();
    //实现IMailKitService服务的 MailKitService构造函数会自动被注入ConfigService、LogService值
    

    mailService.SendMail("11","","","");

}

自定义扩展方法,与扩展对象同命名空间,使用this,使用地方可以直接点出来。(必须是静态类)

相关推荐
李帅朋7 小时前
微分基本定义笔记
人工智能·笔记·深度学习·神经网络
xian_wwq9 小时前
【学习笔记】深度认知系列-第16讲-提示词工程
人工智能·笔记·学习
youm200310 小时前
认识Redis
redis·笔记·学习
亮工硬件11 小时前
1-11 STM32内部FLASH(数据掉电保存)
笔记·stm32·单片机·嵌入式硬件·学习
疯狂打码的少年14 小时前
【数据库技术】复习日:关系代数 + SQL + 规范化(整理对比表)
jvm·数据库·笔记·sql
维克兜率天14 小时前
【维克】特征归一化与标准化:为什么模型对数据的“尺度“很敏感?
人工智能·笔记·python·机器学习·量化
摇滚侠14 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 31
android·spring boot·笔记
金字塔頂の蝸牛15 小时前
商务日语口语全手册(一)
笔记·日语·语言·外语
从零开始的嵌入式之旅15 小时前
day36
linux·c语言·经验分享·笔记·嵌入式硬件
墨雨晨曦8816 小时前
2026/09/07笔记
笔记