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

相关推荐
Xudde.8 小时前
班级作业笔记报告0x04
笔记·学习·安全·web安全·php
zzh08110 小时前
MySQL高可用集群笔记
数据库·笔记·mysql
绛橘色的日落(。・∀・)ノ10 小时前
Matplotlib实践学习笔记
笔记·学习
chase。10 小时前
【学习笔记】AGILE:把人形机器人强化学习从“玄学”变成“工程学”
笔记·学习·敏捷流程
久菜盒子工作室10 小时前
高等教育学|第一章高等教育概述
经验分享·笔记·课程设计
tq108611 小时前
语言流形与思维共生:中西认知图景的差异与交融
笔记
YuanDaima204811 小时前
基于 LangChain 1.0 的检索增强生成(RAG)实战
人工智能·笔记·python·langchain·个人开发·langgraph
_李小白12 小时前
【OSG学习笔记】Day 31: 渲染到纹理(RTT)
笔记·数码相机·学习
练习时长一年14 小时前
我的开发笔记
笔记
生瓜硬劈..14 小时前
SQL 调优全解:从 20 s 到 200 ms 的 6 步实战笔记
java·笔记·sql