在对ASP.NET Core管道中关于依赖注入的两个核心对象(ServiceCollection和ServiceProvider)有了足够的认识之后,我们将关注的目光转移到编程层面。在ASP.NET Core应用中基于依赖注入的编程主要涉及到两个方面,它们分别是将服务注册到ServiceCollection中,和采用注入的方式利用ServiceProvider提供我们所需的服务。我们先来讨论ASP.NET Core应用中如何进行服务注册。[本文已经同步到《ASP.NET Core框架揭秘》之中]

目录
一、服务注册
    系统自动注册的服务
    手工注册的服务
二、以注入的形式提取服务
    启动类型的构造函数和Configure方法种注入服务
    中间件类型的构造函数和Invoke方法中注入服务
    Controller类型的构造函数中注入服务
    View中注入服务
三、与第三方DI框架的整合

一、服务注册

就注册的主体来划分,ASP.NET Core应用中注册的服务大体可以分为两种类型,一种是WebHostBuilder在创建WebHost之前自动注册的服务,这些服务确保了后续管道能够顺利构建并能提供基本的请求处理能力。另一种则是用户根据自身的需要注册的,如果系统自动注册的服务不符合我们的需求,我们也可以注册自己的服务来覆盖它。

系统自动注册的服务

那么系统在构建ASP.NET Core管道的时候到底自行注