初期化部と依存性注入(DI)

例えばVisual Studioのフォームデザイナの様なGUIを作ることを想定します。

フォームに貼り付けるコントロールはテキストボックスやチェックボックスなど様々な貼り付けられます。各コントロールはデザイナに貼り付けられたときに生成されるわけですが、このときデザイナからコントロールを生成するためには各コントロールの情報を持っていなければなりません。しかし、カスタムコントロールなどデザイナ設計時点では想定していないコントロールも扱えるようにしたい状況が生じます。そのためデザイナが生成すべき各コントロールの情報を持っているという設計には無理があるわけです。

Delphiなどいくつかの言語にはリンクしただけで初期化部が実行できるものがあります。この場合には初期化部でデザイナにコントロールの生成情報を登録する機会があります。それに対しC#、Visual
Basicでは初期化部を持ちませんので別の方法を考えないといけません。

そのような場面で依存性注入(Dependency Injection)が使えます。コントロールの生成情報(型名など)を設定ファイルに書き出し、デザイナ側で設定ファイルを読んでその情報を元にReflectionを使ってコントロールを生成します。

Visual Studioが依存性注入を使っているかどうかわかりませんが、フォームデザイナなどのプラグイン的な機能が必要なときには依存性注入を使えるというお話です。