.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>),道理同上,这个是泛型版本,并且指定了服务类型和实现对象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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训练数据并当服务器共享给他人