拥抱.NET Core系列:依赖注入(2)

上一篇“拥抱.NET Core系列:依赖注入(1)”大体介绍了服务注册、获取和生命周期,这一篇来做一些补充。

由于内容跨度大(.NET Core、ASP.NET Core),所以文章并不是非常的贯穿,大家可以挑着看。

构造函数的选择

如果一个服务中包含多个构造函数,.NET Core会选择哪一个呢?

答案是:最大匹配的构造函数。

我们来看个示例

拥抱.NET Core系列:依赖注入(2)_第1张图片

泛型服务

单个泛型

拥抱.NET Core系列:依赖注入(2)_第2张图片

多个泛型

拥抱.NET Core系列:依赖注入(2)_第3张图片

集成第三方DI容器

我们这边使用Autofac来做演示。

安装packages:“Autofac.Extensions.DependencyInjection”

拥抱.NET Core系列:依赖注入(2)_第4张图片

在 ASP.NET Core

拥抱.NET Core系列:依赖注入(2)_第5张图片

注意修改“ConfigureServices”方法的返回值为“IServiceProvider”。

在 View 中使用服务

拥抱.NET Core系列:依赖注入(2)_第6张图片

其它

在 ASP.NET Core 中,每个Request,都会创建一个新的DI子容器,在请求结束后会销毁该DI子容器。这样可以很好的避免资源泄漏。子容器的服务生命周期可以参考上一篇文章。

写在最后

.NET技术栈QQ群:384413261(点击加入.NET Group)

你可能感兴趣的:(拥抱.NET Core系列:依赖注入(2))