.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 @ 2021-02-08 21:27  顺其自然,道法自然  阅读(2163)  评论(0编辑  收藏  举报