.Net依赖注入技术学习:添加服务的9种方式

向服务容器中添加服务有9种方式,本文以添加单例服务为例,逐一介绍。参考微软的MSDN帮助

1、AddSingleton(IServiceCollection, Type),示例如下。其中Hello是一个类,不能是接口。

services.AddSingleton(typeof(Hello));

2、AddSingleton<TService>(IServiceCollection),和上一种方式是等价的。

services.AddSingleton<Hello>();

3、AddSingleton(IServiceCollection, Type, Type),它有两个参数,第1个是服务类型,第2个是实现类。

services.AddSingleton(typeof(IHello),typeof(Hello));

4、AddSingleton<TService,TImplementation>(IServiceCollection),效果同上,这是最常用的方式

services.AddSingleton<IHello,Hello>();

5、AddSingleton(IServiceCollection, Type, Object),直接添加对象实例,这是单例模式所特有的,Scoped和Transient是没有的。

services.AddSingleton(typeof(IHello),new Hello());

6、AddSingleton<TService>(IServiceCollection, TService)。同上。

services.AddSingleton<IHello>(new Hello());

7、AddSingleton(IServiceCollection, Type, Func<IServiceProvider,Object>),这个是精髓,它的特殊点在于可以在添加服务时,调用其他的服务

例子可以参考这篇博客:C# 依赖注入IServiceCollection的AddSingleton方法使用

8、AddSingleton<TService>(IServiceCollection, Func<IServiceProvider,TService>),道理同上,这个是泛型版本。

9、AddSingleton<TService,TImplementation>(IServiceCollection, Func<IServiceProvider,TImplementation>),道理同上,这个是泛型版本,并且指定了服务类型和实现对象。

posted @   顺其自然,道法自然  阅读(2490)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示