そんなに深くない気がしますが。Microsoft.Extensions.DependencyInjection
の DI についてざっくりまとめた記事です。なお、長いので、Microsoft.Extensions.DependencyInjection
を M.E.DI
と略します。
例によって、公式ドキュメント にすべて書いてある、はずですが、ここでは少し別の観点でまとめてみます。また、ドキュメントに書いてない(と思う)内部実装についてもいくつか書いてあります。
IServiceCollection
の拡張メソッドを使用して、フレームワークやランタイムが提供するIServiceCollection
の実装に対して登録していきます。IServiceCollection
はServiceDescriptor
というサービスについてのスペックを表すオブジェクトのコレクションである。ServiceDescriptor
はサービス型をキーにして、ライフタイムと実装を持ちます。