問題タブ [ioc-container]

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 に答える
14783 参照

.net - どの依存性注入ツールを使用する必要がありますか?

ユーザー インターフェイスの依存性注入ツールに Microsoft Unity を使用することを考えています。

私たちの中間層はすでにキャッスル ウィンザーを使用していますが、Microsoft を使い続ける必要があると考えています。

最高の依存性注入ツールとは何かについて考えている人はいますか?

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

c# - 変化する依存関係を注入する方法

私は依存性注入が初めてなので、次のシナリオをどのように処理するのだろうかと思っています。次のようなものがあります。

Web アプリケーションの場合、各リクエストは異なる DatabaseContext を構築して、異なるデータベースを指すことができます。Windows フォームの場合、現在の DatabaseContext を変更できます。di フレームワークは、変更可能な依存関係をどのように処理しますか? IDataAccess を要求すると、常に適切な/現在の DatabaseContext が含まれるようになります。

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

castle-windsor - IoCコンテナの適用性/シナリオのデモンストレーション?

.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コンテナについて自分自身を教育する必要があるかどうかについて本当に教育を受けたいので)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 投票する
12 に答える
18438 参照

c# - 独自の IOC コンテナーをコーディングする

C# で独自の IOC コンテナーを作成した人はいますか? それとも、Spring などのさまざまなフレームワークを使用する大多数の人々ですか。それぞれの長所と短所は何ですか?

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

.net - .NET を使用して IOC コントロールを作成し、Web プロジェクトに配置できますか?

現在、多くの Web アプリケーションで使用する UserControls のライブラリがあります。これらのコントロールを更新して、IOC を使用してロジックを分離できるようにしたいと考えています。

したがって、Web ページ自体に次のようなものがあります。

コントロールには、次のようなコンストラクターがあります。

理想的には、IOC コンテナがインジェクションを処理します。これはできますか?もしそうなら、どのライブラリがこれを提供していますか? これについて話し合っていることを知っているリンクがあれば、大いに感謝します。

前もって感謝します

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

c# - Castle Windsor - 複数のインターフェースを実装する 1 つのクラス

私はアプリケーションの開始時に2つのインターフェースを次のように登録します:-

次に、ここで 2 番目のインターフェイス (ISnippetController) を使用するオブジェクトで IoC.Resolve を実行しようとすると、次の例外がスローされます。

コンポーネント 'MyApp.Admin.Presenters.SnippetPresenter' は、満たすべき依存関係があるため作成できません。MyApp.Admin.Presenters.SnippetPresenter は次の依存関係を待機しています: サービス: - 登録されていない MyApp.Admin.Controllers.ISnippetController。

登録の順序を入れ替えると、IEntityIndexController が見つからないというエラーが表示されます。そのため、クラスの最初の登録のみを取得し、同じ具象クラスにマップされるそれ以降のインターフェイスは無視されるようです。

ここで私が見逃している明らかなものはありますか?(.net 3.5、windsor RC3を使用したps im)

0 投票する
8 に答える
1679 参照

unit-testing - Unittesting IoC登録?

コンポーネントを IC コンテナーに登録するコードを単体テストする必要がありますか?

もしそうなら、どのように?