問題タブ [inversion-of-control]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
9 に答える
1718 参照

.net - .NET - この分野の初心者にどの IoC コンテナー フレームワークをお勧めしますか?

この分野の初心者にどの Inversion of Control Container フレームワークをお勧めしますか?

0 投票する
1 に答える
4539 参照

c# - Windsor Container からのコンポーネントの削除または上書き

私は一見非常に単純なことを達成しようとしています:私の単体テストから、解決されている型をモック/偽のオブジェクトに置き換えたいと思っています。

例: xml 構成は、サービス IInterface のコンポーネントが ClassA に解決される必要があることを示しています。それは問題ありませんが、単体テストから、代わりに型を FakeClassA に解決したいと考えています。「指定されたキーに対してすでにコンポーネントが登録されている...」ため、これには container.AddComponent を使用できません。

0 投票する
3 に答える
3600 参照

dependency-injection - Castle Windsor を使用した複数のインターフェイス インジェクション

コンテナに複数の実装がある場合、どのようにして城のウィンザーが実行時にインターフェイスの適切な実装を選択することができるでしょうか。

たとえば、IExamCalc と呼ばれる単純なインターフェイスを使用して、その試験で誰かがどのように成績を上げたかを計算するとします。

いいえ、たとえば、次のようないくつかの実装があります。

ExamMarkService が Windor を介して reslove されているとします。正しい実装がコンストラクターに挿入されていることを確認するにはどうすればよいですか? これはマルチテナンシーの問題の例ですか?

すべてが理にかなっていることを願っています

コリン・G

0 投票する
2 に答える
2280 参照

dependency-injection - IOCフレームワークを使用して複数の具体的な実装にバインドしますか?

私は、以前にプロジェクトで使用されていたDI/IOCコンテナーの概念に比較的精通しています。ただし、この新しいプロジェクトでは、既存のフレームワークがないため、フレームワークを選択する必要があります。

簡単に言うと、特定のインターフェイスに対していくつかの実装を構成するシナリオがいくつかあります。Webを一瞥すると、主流のフレームワークのいずれかを使用して、実装の1つに選択的にバインドするのは非常に簡単なようです。

ただし、構成されたすべての実装を実行する必要があるコンテキストがあります。私はここですべてのIOCタグ付き投稿を精査し、主要なフレームワークのドキュメント(これまでのところ、Unity、Ninject、およびWindsorを調べています)を調べようとしていますが、ドキュメントはまばらであることが多く、調査する時間がありません。すべてのパッケージのソース。

それで、私のサービスの1つに対して構成されたすべての具象タイプにバインドできるようにする主流のIOCコンテナーはありますか?

0 投票する
1 に答える
718 参照

tdd - IoC とインターフェイスのベスト プラクティス

TDD に向かう途中で、既存のプロジェクトをいじって IoC を試しています。一言で言えば、私の質問は次のとおりです。パブリック メソッドと非パブリック メソッドに関心がある場合、IoC に関するベスト プラクティスは何ですか?

次の 2 つのクラスがあります。

ThatThing は、ThisThingBase 参照を使用して、ThisThingBase の子孫によってしばしばオーバーロードされるメソッドを呼び出すいくつかのことを行います。

Method1 と Method2 はパブリックです。Method3 と Method4 は内部であり、ThatThings によってのみ使用されます。

ThisThing なしで ThatThing をテストしたいと思います。

IoC について調べてみたときに最初に考えたのは、IThing インターフェイスを定義し、それを ThisThingBase で実装して、それを ThatThing コンストラクターに渡す必要があるということでした。IThing はクライアントが呼び出すことができるパブリック インターフェイスですが、ThatThing も必要とする Method3 または Method4 は含まれていません。

これらの 2 つのメソッドに対して 2 番目のインターフェイス (おそらく IThingInternal) を定義し、両方のインターフェイスを ThatThing に渡す必要がありますか?

0 投票する
1 に答える
429 参照

inversion-of-control - StructureMap を使用したコンテナの連鎖

WindsorContainer.AddChildContainer() のように、StructureMap でコンテナーをリンクすることはできますか?

3 つのコンテナ レベルを実現したい。- 1 ページ要求レベル - 1 セッション レベル - 1 アプリケーション レベル

これらはチェーン化されるため、「基本レベル」のコンテナーに対して 1 つのインスタンス要求のみが行われます。

コンテナーのレベルは実際には重要ではなく、それらをリンクする機能があるかどうかだけです。

0 投票する
4 に答える
3041 参照

.net - ResolveAll の機能

IOCでは何をしResolveAllますか?? 公式の答えは「このタイプに一致するすべての有効なコンポーネントを解決する」であることを知っています。これは、特定のインターフェイスを実装する任意のクラスを返すということですか?

0 投票する
3 に答える
2107 参照

.net - Unityの「リストインジェクション」?

同じインターフェースを介して 1 対多のバックエンド システムに接続するプロジェクトが近づいています。それを IBacksideProvider と呼びましょう。

Unity を使用して、実行時にこれらのプロバイダーを挿入したいと考えています。問題は、1...n 個のバックエンド システムについて話しているため、IBacksideProvider の 1...n 個の実装を登録する必要があることです。Unity は、そのままではこれをサポートしていません。

ただし、このブログ投稿は、それが可能であることを示唆しています。誰かがこれを行ったことがあるか、またはこれを行うために Unity を操作する方法を考えているかどうか疑問に思っています。ティア。

0 投票する
2 に答える
2728 参照

c# - StructureMap の ObjectFactory ですべてのインスタンス オブジェクトを破棄するにはどうすればよいですか?

プロジェクトで StructureMap を使用しています。アプリケーションの実行が終了したら、IDisposable を実装する ObjectFactory 内のすべての Singleton インスタンスで Dispose() メソッドを呼び出す必要があります。

StructureMap APIを介してそれを行う方法がとにかく見つかりません。

私が持っていた別の考えは、すべてのインスタンスへの参照を取得して自分で呼び出すことでしたが、すべてのインスタンスをループする方法がわかりません。

0 投票する
3 に答える
2774 参照

inversion-of-control - ジェネリック型依存性注入: T を注入する方法

アプリケーションでさまざまな種類のドキュメントを同じ方法で処理したい したがって、次のような汎用インターフェイスがあります。

そして、さまざまな種類のドキュメントに対して、このインターフェイスを実装します。

例えば:

次に、もちろん次のようなことができます。

上記の行を疎結合にするために、実行時に T を注入する方法を知ることは興味深いでしょう...

しかし、構成ごとに、FinanceDomcumentProcessor または MarketingDocumentProcessor を使用するかどうかを決定したい...したがって、左側のサイトにも T を注入する必要があります... c# 2.0 を使用する必要があるため、魔法の言葉は使用できませんこの場合、「var」は非常に役立ちます...しかし、これをオープンで柔軟に設計するにはどうすればよいですか...


誤解して申し訳ありませんが、すべてのコメントに感謝しますが、私の課題には別の例があります (おそらく、間違った設計を使用している可能性があります) ...しかし、試してみます: 同じ状況ですが、異なる説明

私が持っている画像の例:

ReportingService、Crystal、ListAndLabel 3 つの異なるレポート ドキュメント タイプ。私は一般的なハンドラーIReportHandler<T>(上記と同じ) を持っています。このハンドラーは、レポート ドキュメントを処理するためのすべての機能を提供します。例えば

Reportingservicesここで、Unity のようなフレームワーク (または他のフレームワーク) を依存性注入に使用して、Crystal を使用するか、リストとラベルを使用するかを構成によって決定したいと考えています。

マッピングを指定すると、 my を注入できますChrystalReportHandlerが、どのように T を左側に注入できますか、より良い言葉で言えば のタイプReportDocument.

私の問題はもちろん左側のサイトですが、それはタイプに結合されていますが、マッピングがあります...マッピングに基づいてオブジェクトを生成し、マッピングされたタイプを割り当てることは可能でしょうか? または基本的に左側にもTを注入しますか?または、このアプローチはこの状況には適していません。