5

私の最初の質問で

.NETライブラリの正しいコンポジションルートを見つけます

依存性注入について明確にするのに役立ちました。Stevenの徹底的な回答は、再利用可能なライブラリが特定のケースであり、ここで使用できると述べていますpoor-man-injection完全性については回答を参照してください)。

AutoFixtureのソースコードを調べると、メインアセンブリがコンテナに依存せずにどこでもDIを使用していることがわかります。マーク・シーマンの本でよく説明されていること。

問題は、コンテナを使用せずにコンポジションルートを抽象化するためのパターン(またはグッドプラクティス)を誰かが導入できるかどうかです。

その他の注意事項(オプション):

Fixture型構築子で構成ルートが発生するAutoFixtureに戻ります。クラスは、同じようにインスタンスをグループ化するために使用されると思い*Relaysます。一部のDIライブラリにはモジュールの概念があります。興味深いことにBehaviourRoot、グラフの上部にあるという名前のタイプがあります(これは私が検索している種類の抽象化ですか?)。

4

1 に答える 1

10

コンポジションルートパターンの説明には、DIコンテナなしで実装できることが明示的に記載されています。このパターンはコンテナーの使用法に依存せず、コンテナーの有無にかかわらず使用できます。

コンポジションルートは、アプリケーションのエントリポイントです。定義上、呼び出し元がないため、抽象化しても意味がありません。

上記の記事を引用するには:

コンポジションルートは、アプリケーションインフラストラクチャコンポーネントです。

アプリケーションのみがコンポジションルートを持つ必要があります。ライブラリとフレームワークはすべきではありません

(太字で強調)

AutoFixtureはライブラリであるため、コンポジションルートはありません。Fixtureクラスは、 DIに適したライブラリを構築するという精神に基づいたFaçadeです

于 2013-03-14T07:06:17.770 に答える