コンポーネントの自動登録機能で考えること その2

いろいろ考えたが、コンテナに登録する際の自動バインドモードの既定値は、"自動バインドしない"に決定しようと思う。いろいろあるが、決定したのは以下の2点から。

  • クラスを使うユーザ(プログラマ)が、そのクラスの全てを知っているとは限らない

これは、意図しない自動バインド処理は避けたほうが無難だと判断した結果だ。.NET Frameworkで提供されている型を継承している場合、自分で作ったクラスでさえ意図していないプロパティで自動バインドが動いてエラーになる位なので。
アセンブリからの自動登録時も、基本的にはインスタンス間の依存性の解決は自動では行わない。全てはカスタム属性から明示的に指定された内容を使用する。

  • 自動バインド処理は負荷が高い

自動バインド処理は、対象の型の全てのプロパティ(フィールド)を、インジェクション可能か(インタフェースか?等)判定する必要があるため、負荷は高くなる。この負荷はサーバアプリケーションでは恐らく問題にならないが、クライアントアプリケーションでは影響が大きいと思われる。

設定ファイルを使う場合、自動バインドのデフォルトのモードを変えるのはDTDを変更するだけで良いので非常に簡単だ。カスタム属性は、代入している初期値を変更して再ビルドの必要がある。