.NETスペースの多くの人々がCastleWindsorを手に入れ、プロジェクトに実装しています。この1年間、IoCコンテナーが一般的な「ベストプラクティス」として扱われる理由を理解するのに苦労していました。ウィンザーの理由などについての要約と簡単な説明をたくさん読みましたが、それらの最後の1つは確かに抽象的であり、私が触れたほとんどのプロジェクトでは実用的ではないようですが、最近はウィンザーを使用する多くのプロジェクトに出くわしましたが、その理由はわかりません。
C#/。NETは本質的に、インターフェイスベースのコーディング、抽象オブジェクト、デリゲート、およびイベントをサポートします。コア言語から直接IoCを実装し、Reflectionなどを使用して、IoCコンテナライブラリに頼ることなく、既知のインターフェイスを実装する未知のインスタンスをインスタンス化できます。
YAGNI / AYGNI(Are You Going To Need It?)を適用すると、ウィンザーが使いすぎたように感じます。IoCコンテナーの利点は確かにわかりますが、これらの利点には、追加の依存関係とメタデータ(コアコードで呼び出されるIoCコンテナー固有の属性とメソッド、いたるところに散在する.configファイル、app.config / web.config)が犠牲になると思います。バインディングタグでいっぱいになり、.configファイルの編集が難しくなるなど)ので、トレードオフを理解しようとしています。
とは言うものの、私はWindsorや他のIoCコンテナライブラリを使用したプロジェクトに深く関わったことがないので、これらすべての観察/無知に関する発言をしている可能性を受け入れています。私が本当に必要としているのは、IoCコンテナライブラリが使用された「平均的な」または「典型的な」プロジェクトを誰かがデモンストレーションすることです。依存関係とメタデータを使用します。
誰かが私を埋めるブログ投稿、記事、または本を知っているなら、それは素晴らしいでしょう。
(私は酒を主張するために議論しているのではありませんが、IoCコンテナについて自分自身を教育する必要があるかどうかについて本当に教育を受けたいので)。