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

devtools/2024/11/17 0:11:18/
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));//如果获取不到 则返回nullvar 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,使用地方可以直接点出来。(必须是静态类)


http://www.ppmy.cn/devtools/134570.html

相关文章

力扣题目解析--合并两个链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff…

Java基础:内部类

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

密码学在网络安全中的应用

密码学作为网络安全领域的核心技术之一&#xff0c;发挥着举足轻重的作用。以下是对密码学在网络安全中应用的详细阐述&#xff1a; 一、数据加密密码学通过加密算法将明文转换为密文&#xff0c;以防止未经授权的个人或机构获取敏感信息。这主要包括&#xff1a;对称加密&…

正点原子IMX6ULL--嵌入式Linux开发板学习中常用命令和笔记记录

学习路线图 传驱动文件 sudo cp chrdevbase.ko chrdevbaseApp /home/txj/linux/nfs/rootfs/lib/modules/4.1.15/ -f bootcmd setenv bootcmd tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000 setenv bootcmd tftp 80800000 zImag…

PHP大模型深度学习库TransformersPHP 安装体验

TransformersPHP是一个工具包&#xff0c;PHP开发人员可以轻松地将机器学习魔法添加到他们的项目中。 管方地址&#xff1a;TransformersPHP github地址&#xff1a;GitHub - CodeWithKyrian/transformers-php: Transformers PHP is a toolkit for PHP developers to add machi…

STM32芯片EXIT外部中断的配置与原理以及模板代码(标准库)

配置EXIT外部中断其实就是把GPIO刀NVIC的各个外设配置好 第一步&#xff1a;配置RCC&#xff0c;把我们涉及到的外设的时钟都打开 &#xff08;此处EXTI是默认打开的&#xff0c;而NVIC是内核外设无需配置&#xff09; 第二步&#xff1a;配置GPIO,选择端口为输入模式 第三…

NoSQL 数据库有哪些类型?

目录 NoSQL 是什么? SQL和 NoSQL 有什么区别? NoSOL数据库有什么优势? NoSQL 数据库有哪些类型? NoSQL 是什么? NoSQL&#xff08;Not Only SQL 的缩写&#xff09;泛指非关系型的数据库&#xff0c;主要针对的是键值、文档以及图形类型数据存储。并且&#xff0c;NoS…

蓝队知识浅谈(上)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;蓝队基础之网络七层杀伤链_哔哩哔哩_bilibili 本文主要分享一些蓝队相关的知识。 首先我们先来了解一下什么是蓝队&#xff1f; 蓝队是信息安全领…