「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
DI †
- DI: Dependency Injection
- 依存性の注入
DIとは? †
依存性を無くすために、動的に動作を注入する。
依存性 †
- あるクラスに、固定の定数、変数、インスタンスが入っている状態
- つまりそのクラスは、その定数、変数、インスタンスに依存している。
注入 †
- そのクラスの外から定数、変数、インスタンスを設定する。
- これにより、動的に動作を変えられるようにする。
ユースケース †
- モックの差し替えなどを実現し、テストを容易にする。
- フレームワークの差し替えを実現し、特定のフレームワークへの依存性を減らす。
問題点 †
「IoC」や「AOP」自体にも言えることになるが、
同時に全体として協調動作させるときに複雑さが増す。
.NETにおけるDI †
- Spring .NETによりサポートされていた模様。
詳細 †
DIの種類 †
プログラムに依存性を注入する方法としては、以下のような手法が存在する。
interface注入 †
注入用のinterfaceを定義して注入を行う方法
setter 注入 †
setter メソッドを定義して注入を行う方法
constructor注入 †
constructorを定義して注入を行う方法
コンテナー †
- 依存関係を作成する専用のクラス。
- 要求された依存関係をインスタンスの作成で行う。
- 依存関係はハードコーディングではなく、構成により宣言。
- 依存関係のある型のインスタンスを提供するファクトリ。
- 依存関係だけでなく、ライフサイクルも管理する。
- 以下のように呼ばれる。
- 制御の反転 (IoC) コンテナー
- 依存関係の挿入 (DI) コンテナー
参考 †
Qiita †
Tags: :プログラミング, :.NET開発