
“如果建筑师按照程序员编写程序的方式建造建筑物,那么第一只到来的啄木鸟(找 Bug)就将摧毁文明。”
- Gerald Weinberg(杰拉尔德·温伯格)
本文内容基于 .NET Core 3.1
- 一、Microsoft.Extensions 简介
- 二、什么是依赖注入(Dependency Injection)?
- 三、DI 容器的使用方法
- 四、在 http://ASP.NET Core 中替换容器实现
- 五、结语
一、Microsoft.Extensions 简介
.NET Extensions 是一套官方的、开源的、跨平台的 API 集合,提供了一些常用的编程模式和实用工具,例如依赖项注入、日志记录、缓存、Host以及配置等等。该项目的大多数 API 都被用在 .NET 平台的各个应用框架上,如 http://ASP.NET Core,Xamarin 等等。虽然 http://ASP.NET 使用了很多这些 API 但 http://ASP.NET 并没有与它们紧密耦合。你也可以在控制台应用程序、WinForm以及WPF应用程序上使用它们。总结一句就是:它是官方造的“轮子”。
https://github.com/dotnet/extensionsgithub.com.NET 官方将这个项目称为 .NET Platform Extensions.

.NET Platform Extensions 包括下面所列的包,由于 .NET 5 正在整合各个代码仓库,所以 .NET Extension 中的部分代码仓库已经分别以迁移到了 dotnet/runtime 和 dotnet/aspnetcore 这两个仓库中。
移动到 dotnet/runtime 的包:
-
- Caching
Microsoft.Extensions.Caching.Abstractions
Microsoft.Extensions.Caching.Memory
- Configuration
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Abstractions
Microsoft.Extensions.Configuration.Binder
Microsoft.Extensions.Configuration.CommandLine
Microsoft.Extensions.Configuration.EnvironmentVariables
Microsoft.Extensions.Configuration.FileExtensions
Microsoft.Extensions.Configuration.Ini
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.Configuration.UserSecrets
Microsoft.Extensions.Configuration.Xml
- Dependency Injection
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.DependencyInjection.Abstractions
- File Providers
Microsoft.Extensions.FileProviders.Abstractions
Microsoft.Extensions.FileProviders.Composite
Microsoft.Extensions.FileProviders.Physical
- File System Globbing
Microsoft.Extensions.FileSystemGlobbing
- Hosting
Microsoft.Extensions.Hosting
Microsoft.Extensions.Hosting.Abstractions
- Http Client Factory
Microsoft.Extensions.Http
- Caching