[seasar-dotnet:1601] Re: 自動バインディング対象について

Takafumi Yoshida [E-MAIL ADDRESS DELETED]
2010年 3月 17日 (水) 11:00:34 JST


いつもお世話になります。吉田@オプティクスです。

2010年3月17日10:18 Tatsuharu Kawakami <[E-MAIL ADDRESS DELETED]>:
> S2Container.NETで自動バインディングの対象となるのはInterfaceのTypeのみとなっていますが、
> これはどういった理由からなのか教えていただけないでしょうか?
> http://s2container.net.seasar.org/ja/dicontainer-reference.html#AutoBindingMode

自分もよくは知らないのですが・・・

そもそもDIの考え方のスタートとして、コンポーネント間の関係をインターフェースで定義しておいて
具体的なコンポーネント(実装)は別に実装し、その関係を設定ファイルにもたせることで
コンポーネント間の依存関係をコードから排除するって考えがあったように思います。

このことから、インターフェースと実装は分けて書くべし!的な風潮があったのかも。
これをベースにしたのがJava版のSeasar2.3系列であり、.NET版Seasarだと思われます。

ただ、この風潮ってあまりメリットがなくなってきて、実装だけでもいいのでは?となって
Java版のSeasarの2.4系列ではインターフェースなしでもコンポーネントを作成できるようになり
.NETではQuillが生まれた、というふうに自分は理解してます。

ですので、自分の中では
Seasar 2.3(Java) = Seasar.NET
Seasar 2.4(Java) = Quill
みたいな意識でいます。

#あ〜、自分もよく理解できてないな・・・ツッコミ希望w

> IFを作成する作業が面倒なので、
> 重大な理由が無ければ実装クラスでも自動バインディングするようにカスタマイズしたいと考えております。

上記の様なニーズであれば、Quillを使ったほうがいいかもしれません。
Quillであれば、インターフェースなしでImplementationアノテーションをクラスに記述すれば、Quillでコンポーネント
として扱えます。


seasar-dotnet メーリングリストの案内