問題タブ [dependency-injection]
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.
c# - ファクトリーでコンストラクター注入をどのように実装しますか?
ファクトリ パターンを使用している場合、実行時にどのように依存関係をコンストラクターに注入しますか?
boolean、array、freetext、matrix など、さまざまな形式で Foos を作成しています。Foo のさまざまな用途が見つかると、その形式のリストが増えていきます。これが私の基本的なコア ドメインです。
IFoo は、コンシューマ コンテキスト用に装飾されています。
コンシューマーに Foo を直接インスタンス化させたくないので、強制的にファクトリーを使用させます。
それでも、彼らは特定のコンテキストのために、私の抽象ファクトリーからファクトリーを派生させる必要があります。
私は特に次のように、html コンテキストで foos を構築しています。
私の問題は、抽象的な FooFactory にあります。空の値リストを常に ArrayFooFormat に挿入しています。消費者から値リストを渡せるようにしたい。他の FooFormats については、コンシューマーから適切なコンストラクター引数を渡したいと考えています。しかし、私はパブリック API を非常にシンプルに保ちたいと考えています。BuildFoo() に大量のオーバーロードは必要ありません。
では、HtmlFooConsumer.DoSomeFoo() 内から factory.BuildFoo<T>() 呼び出しにカスタム値リストを渡すにはどうすればよいでしょうか? アイデアはありますか、スタックオーバーフローの達人ですか?
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個のアセンブリがあります。
wcf - WCF サービスはコンストラクターを持つことができますか?
ソリューションで WCF サービスを新規作成する場合、次のことを実行して、パラメーターを渡すコンストラクターを使用できますか? はいの場合、ランタイムは必要な IBusinessLogic オブジェクトをいつ、どこで、どのように埋めますか?
dependency-injection - 最もよく使用する疎結合のパターンはどれですか?
最近、疎結合アプリケーションの構築方法に関するブログ記事をたくさん目にしました。疎結合アプリケーションを作成するときに最もよく使用するパターンはどれですか? 依存性注入?コントロールの反転?
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で、この方法を使用することに欠点があるかどうかです? たとえば、パフォーマンス ヒットなどです。
私はこのアプローチの利点をここにいる仲間の開発者に見えるようにしようとしていますが、次のような反響があります。
これはリフレクションを使用しており、コンテナからオブジェクトが呼び出されるたびにリフレクションを使用する必要があるため、パフォーマンスが大幅に低下します。(これは事実ですか?すべての呼び出しでリフレクションを使用しますか?)
インターフェイスに依存している場合。クラスに追加された追加のメソッドとプロパティを持つオブジェクトを処理するにはどうすればよいですか? (継承による)
c# - Castle WindsorからUnityへ-CWと同じようにUnityで自動構成できますか?
これがあまりにも具体的な質問であるかどうかはわかりませんが、可能であれば、Microsoftが承認していないライブラリに依存しないように、CastleWindsorを使用するアプリをUnityに移植する必要があります。私は知っていますが、あなたは何をするつもりですか。
とにかく私はそれを管理しましたが、私は私が持っているものに満足していません。ウィンザーで私はこれを持っていました:
私はこれに統一して変換しました
ご覧のとおり、ある種の自動構成を使用するのではなく、すべてのものを登録する必要があります。だから私の質問は:これを団結して行うためのより良い方法はありますか?
ありがとう、
アダム。
wcf - WCFを使用したStructureMap?
StructureMap (DI フレームワーク) を WCF と統合できた人はいますか?
このように WCF サービスのコンストラクターで既定のインスタンスを返すことができますが、明らかに理想的ではありません。
私はこれを見ました(http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/07/29/integrating-structuremap-with-wcf.aspx ) しかし、最新の 2.5+ とは互換性がないと思うので、うまくセットアップできませんでした。 StructureMap のリリース。
c# - Linq2Sql、OOP、DependencyInjection の問題
私はまだ OOP の概念と依存性注入に少し苦労しているので、ご容赦ください。
User テーブルを使用して Linq2Sql モデルを生成しました。このユーザーに確認メールを送信できるようにしたいので、User オブジェクトの部分クラス ファイルを作成し、SendConfirmationEmail() メソッドを追加するのが自然だと感じました。ユーザークラスに。このメソッドは MailService を使用して実際の電子メールを送信し、依存性注入を使用してサービスを渡したいので、このように User オブジェクトにコンストラクターのオーバーロードを作成しました
SendConfirmationEmail メソッドは次のようになります。
私はこれが一種の貧弱な依存性注入であることを認識しており、後で依存性注入フレームワークに切り替えたいと考えています。
私にとっての問題は、モデル dll からサービス dll への参照を作成する必要があることです。これは正しくないようです。また、linq2sql で生成されたエンティティが依存性注入フレームワークと OOP の概念とどのように連携するかがよくわからないためです (ninject のように見えると思います)。最も有望です)。
私がこれで正しい方向に進んでいるかどうか、私が言うことができるよりも少し多くの経験を持つ誰かを望んでいました. 私はそれを機能させることができることを知っていますが、同じステップで正しい方法でそれを行うことについて自分自身を教育したいと思います.