問題タブ [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.
inversion-of-control - Castle Windsor - Null コンストラクター引数
Castle Windsor を使用して null コンストラクタ引数を渡すにはどうすればよいですか? 私は次のことがうまくいくと思った
c# - IoCコンテナの使用; 特にウィンザー
この質問への答えは非常に明白なので、誰もこれについて書くことを気にしませんでしたが、遅く、私は本当にこれについて頭を悩ませることができません。
私はIoCコンテナー(この場合はWindsor)を読んでいますが、コードのさまざまな部分からコンテナーと通信する方法がわかりません。
私はDIを取得し、poor mans DI(デフォルトのパラメーター実装でオーバーロードされたインジェクションコンストラクターを呼び出す空のコンストラクター)をしばらく行ってきましたが、コンテナーの利点を完全に確認できます。ただし、重要な情報が1つ欠けています。コンテナからのサービスが必要になるたびに、どのようにコンテナを参照することになっていますか?
渡す単一のグローバルな保険を作成しますか?絶対にありません!
私はこれを呼ぶべきだと知っています:
(たとえば)XML構成をロードしたいのですが、コンテナーをどうすればよいですか?その後、毎回新しいコンテナを作成して、ロードされた構成を内部の静的マジックなどで永続化しますか、それとも毎回構成をリロードする必要がありますか(そうでないか、ライフサイクルが機能しませんでした)。
これを理解できないと、ライフサイクルがどのように機能するかを理解できなくなり、IoCの恐ろしさを使い続けることができなくなります。
ありがとう、
アンドリュー
inversion-of-control - キャッスル ウィンザー: プログラムでリスト パラメーターをコンテナーに渡す方法は?
型を解決するときにリスト コンストラクターのパラメーターを渡すことは可能ですか? 可能であれば、プログラムによる構成を使用したいと考えています。以下に示すように、私は Parameters メソッドをいじっていますが、まだ答えに出くわしていません。
DoSomething クラスは次のようになります
dependency-injection - アプリケーションでCastleWindsorの使用を開始するには、どのアセンブリが必要ですか?
CastleWindsorの使用を開始する方法についてかなり基本的な質問があります。IOC / DIについて読んだので、既存のソリューションでCastleWindsorを試してみたいと思います。私は通常、参照が相対的であるように、ソリューションのフォルダーツリー内のLibフォルダーに外部アセンブリを配置するのが好きです(これがベストプラクティスだと思います)。
Castle \ Bin ...フォルダーのどのアセンブリをLibフォルダーにコピーする必要がありますか?また、各アセンブリへの明示的な参照を追加する必要がありますか、それとも一部のみを追加する必要がありますか?
C:\ dev \ oss \ Castle \ Bin \ net-2.0フォルダーには30個のアセンブリがあり、C:\ dev \ oss \ Castle \ Bin\Dependenciesフォルダーには18個のアセンブリがあります。
oop - コンパイラでの制御の反転
コンパイラの実装内で制御コンテナの反転を実際に使用した人はいますか? 設計上、コンパイラは非常に高速である必要があることはわかっていますが、IoC/DI がプログラミング言語の構築にどのように影響するかについて常に興味を持っていました。ホットスワップ可能な構文です。
inversion-of-control - SFig 言語の構文は効率的で明確ですか (Spring-Framework の XML DSL より優れていますか)?
補遺編集:
経験豊富な Spring Framework 開発者からのフィードバックがなかったため、これに対する回答を受け入れていません。
私は、Spring-Framework の applicationContext.xml ファイル (ここでは、Spring Bean ファクトリにロードするための Bean の初期化と依存関係が記述されています) に使用する代替 DSL に取り組んでいます。
私の動機は、Spring がこの目的で XML を使用するのが好きではなく、これまでに考案された代替手段がどれも本当に好きではないということです。ここでは説明しませんが、さまざまな理由から、Groovy などの命令型スクリプト言語ではなく、宣言型言語にとどまりたいと考えています。
そこで私は ANTLR パーサー ツールを手に入れ、SFig と名付けた新しい Bean ファクトリ DSL を考案しました。これについて詳しく説明しているリンクは次のとおりです。
SFig™ - Spring-Framework の代替メタデータ構成言語
ソースコードリポジトリサイトは次のとおりです。
http://code.google.com/p/sfig/
これまでのところ、言語構文でどのようにやっているのか知りたいです。SFig は効率的でわかりやすいと思いますか? (私は現在、複数行のテキスト文字列に特に関心があります):
dependency-injection - 最もよく使用する疎結合のパターンはどれですか?
最近、疎結合アプリケーションの構築方法に関するブログ記事をたくさん目にしました。疎結合アプリケーションを作成するときに最もよく使用するパターンはどれですか? 依存性注入?コントロールの反転?
c# - 独自の IOC コンテナーをコーディングする
C# で独自の IOC コンテナーを作成した人はいますか? それとも、Spring などのさまざまなフレームワークを使用する大多数の人々ですか。それぞれの長所と短所は何ですか?
c# - DI/IoC、NHibernate、およびそれらを連携させるための支援
私は、DI/IoC、NHibernate に頭を悩ませ、開発中のアプリケーションでそれらをうまく連携させようとしています。私はNHibernateとDI/IoCの両方にまったく慣れていないので、私がやっていることは賢明な方法であるかどうかはよくわかりません。これはシナリオです:
このアプリケーションは、特定の金融取引の特定の値 (証拠金と呼ばれる) を計算する機能をユーザーに提供します。各トランザクションのマージン値の計算は、抽象的な MarginCalculator クラスの具体的な実装によって実行され、使用される具体的な実装は、特定のトランザクション (製品オブジェクトの特定のフィールドによって与えられる) の製品のタイプによって異なります。具体的な電卓クラスには、製品クラスのプロパティを介してアクセスします。すなわち
ユーザーがドロップダウンから特定のクライアントと製品を選択すると、対応する clientId と productId がリポジトリに渡され、NHibernate を使用してトランザクション オブジェクトに注入される前に製品とクライアント オブジェクトにデータが入力されます。私の現在のセットアップでは、トランザクションはコンストラクター依存性注入を介して製品とクライアントの依存性を受け取ります (まだ IoC コンテナーは使用されていません)。
以下は、私がアイデアを得ることを望んでいるものです。
A. Product ドメイン オブジェクトを介して MarginCalculator (本質的にはサービス) にアクセスすることは問題ないと考えられますか、それとも、ここで提案されているように ( http://stackoverflow.com/questions/340461/dependency-injection-with-nhibernate -objects ) ドメイン オブジェクトからサービスの依存関係を削除し、代わりに抽象的な MarginCalculator を依存関係として受け取る新しい TransactionProcessor クラスを作成するようにコードを再構築する必要があります (ここで説明されている行に沿って ( http://www.lostechies.com ) /blogs/jimmy_bogard/archive/2008/03/31/ptom-the-dependency-inversion-principle.aspx ) すなわち
B. IoC コンテナーを使用して、NHibernate に入力/生成された製品とクライアントの依存関係が注入されたトランザクション オブジェクトを取得することは可能ですか? つまり、両方ともユーザーが提供する productId と clientId を指定すると、次のようなものを持つことができます。
コンテナーがトランザクション オブジェクトの製品とクライアントの依存関係を解決するように、NHibernate を使用して、productId と clientId に基づいて製品とクライアントを入力し、入力された製品とクライアントをトランザクションに挿入しますか?
C.典型的な DI シナリオでは、クラス A がインターフェイス B に依存している場合、次のことが行われる可能性があります。
ただし、これは実質的に DI のすべての例が示されている方法であり、IInterfaceB (この場合はクラス B) の実装者が設計時にわかっていることを前提としています。実装者が実行時に決定されるような方法で DI を使用する方法はありますか?
どうもありがとう
マシュー
.net - キャッスル ウィンザーの欠点はありますか?
私はキャッスル プロジェクト、特にウィンザーを調査しています。私は、このテクノロジーで何が可能になるかに非常に感銘を受けました。このような疎結合システムを持つことの利点は明らかです。私が確信していない唯一のことは、特にasp.netで、この方法を使用することに欠点があるかどうかです? たとえば、パフォーマンス ヒットなどです。
私はこのアプローチの利点をここにいる仲間の開発者に見えるようにしようとしていますが、次のような反響があります。
これはリフレクションを使用しており、コンテナからオブジェクトが呼び出されるたびにリフレクションを使用する必要があるため、パフォーマンスが大幅に低下します。(これは事実ですか?すべての呼び出しでリフレクションを使用しますか?)
インターフェイスに依存している場合。クラスに追加された追加のメソッドとプロパティを持つオブジェクトを処理するにはどうすればよいですか? (継承による)