ComponentAutoRegister

Seasar2 DIコンテナにおける、コンポーネント自動登録機能のクラス。本家Java版では、ファイルシステムから任意のパターンで自動的にクラスを登録する、FileSystemComponentAutoRegisterクラスや.jarアーカイブから同様にコンポーネントを登録する、JarComponentAutoRegister等があるが、.NET用としては以下の派生ComponentAutoRegisterがあれば良いかな、と妄想。

  • AssemblyComponentAutoRegister

任意のアセンブリから、コンポーネントを自動登録する。.NETはプロジェクトのビルド単位にアセンブリが生成されるので、そのアセンブリ内をトラバースしてコンポーネントを登録できると凄く便利だ。特に、スマートクライアントはエントリポイントがアセンブリであるため、この機能をデフォルトにしておくことにより、アプリケーション側で用意するコンポーネントの殆どが自動生成できるだろう。

  • ManifestResourceComponentAutoRegister

これは厳密にはコンポーネントの自動登録ではなく、設定ファイルの自動検索なのだが。
.NETの場合、設定ファイルは全て「埋め込みリソース」化してアセンブリに埋め込むことが可能だ。スマートクライアントの場合、配布するアセンブリと配布ファイルをできるだけ少なくしたいため、静的な要素として使うコンポーネントの登録に関しては、DI用設定ファイルを埋め込みリソースとしてビルドしている。
通常、s2のDIコンテナは外部の設定ファイルをインクルードする場合は、





等と明示的に指定する必要がある。
.NETの場合、例として、このファイル群を「埋め込みリソース」とした場合、エントリポイントのアセンブリにリンクされた全ての設定ファイルの名前は以下のイディオムで列挙することができる。

foreach (string resName in Assembly.GetEntryAssembly().GetManifestResourceNames())
{
    //設定ファイル以外のリソースも列挙されるので、設定ファイルだけを絞り込む必要がある
    //例) 拡張子".config"や".dicon"等でフィルタする、等
}

このようにリソースをトラバースして、そこに設定ファイルがあれば、マニフェストリソースからストリームを得て、その設定ファイルに記述されているコンポーネントを処理することにより、設定ファイル記述が減る。

以上、妄想。(というか、こんな感じで実装すれば良いな、という想像、ってやはり妄想か)