「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ミドルウェア /サービス / フレームワークの
差し替えを実現し、特定のフレームワークへの依存性を減らす。
- 依存性反転原則
- 抽象化は依存関係をinterfaceに抽出することにより行われる。
- interface実装をパラメタとして提供するのも、戦略設計パターンの例。
詳細 †
インジェクションの構成 †
以下のように、インジェクションを構成できる。
- Public constructor
- 1つのPublic constructor(複数のPublic constructorは例外)
- 依存関係の挿入によって提供されない引数は、既定値のサポートが必要。
※ 詳しくはコチラを参照。
対象 †
- ConfigureServices?メソッドでの登録メソッドによりライフサイクルが変わってくる。
- AddSigleton? : アプリケーションにて共有のシングルトンインスタンスを作成する。
- AddScoped? : Webリクエストごとに新しいインスタンスを作成する。
- AddTransient? : Dependencyが要求されるごとに新しいインスタンスを作成する。
- Configureメソッドには、ConfigureServices?メソッドで登録したサービスが、
IApplicationBuilder?や引数を経由で渡されるので、これを使用して構成する。
Controller †
- Constructorインジェクション
MVCのControllerは、constructorを使用しサービスを挿入する。
- Actionインジェクション
Action methodのパラメタとしてサービスを挿入することもできる。
View †
- Viewインジェクション
@inject [サービスの型] [変数名]と、Modelプロパティ風(@model ViewModel?のクラス型)に書く。
コンテナを変更する。 †
ASP.NET Coreでは、
- 既定では、Microsoft.Extensions.DependencyInjection?を使用する。
- ConfigureServices? メソッドが、IServiceProvider? を返すようにシグネチャを変更する方法で、
Autofac (Autofac.Extensions.DependencyInjection?)など、別のコンテナに切替可能らしい。
参考 †
Microsoft Docs †
DevIQ > Posts †
Principles †
Patterns †
Qiita †
時が癒す †
ASP.NET Core MVC のDIコンテナを利用する
Autofac †
Tags: :プログラミング, :.NET開発, :.NET Core, :ASP.NET, :ASP.NET MVC