杨中科 .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,使用地方可以直接点出来。(必须是静态类)

相关推荐
inferno3 分钟前
SVN学习笔记(一)
笔记·学习·svn
高山有多高5 分钟前
【Linux笔记】线程同步与互斥
linux·笔记
奕鼎竜瑆26 分钟前
GPT-6 Luna Batch API 调用实践笔记
笔记·gpt·batch
妄汐霜35 分钟前
SSE,RocketMQ,MQTT不同之处
笔记·学习·rocketmq
東隅已逝,桑榆非晚1 小时前
c++模板进阶
开发语言·c++·笔记·学习
杨逢昌工厂6S管理1 小时前
107-杨逢昌钣金车间换型管控:从物料切换杂乱到有序换型的四步技术方案
经验分享·笔记·职场和发展·学习方法
FakeOccupational12 小时前
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)
开发语言·笔记
Horn Still Sounds15 小时前
IMX6ULL裸机|I2C通信协议 + ADC模数转换学习笔记
arm开发·笔记·单片机·嵌入式硬件
有范先生17 小时前
这次户外断粮危机后,我更在意主食能不能扛住极端环境了
笔记
喜欢打篮球的普通人18 小时前
MiniMind 学习笔记(十二):Pretrain 实操——从版本梳理到 8GB 显卡上的真实训练
人工智能·笔记·学习