問題タブ [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 投票する
5 に答える
4436 参照

c# - IoC コンテナはファクトリの使用に取って代わりますか

私は IoC コンテナーを使い始めたばかりなので、これがばかげた質問である場合は申し訳ありません。

アプリに次のようなコードがあります

これは基本的に、入力データを処理するための正しい戦略を返す単純なファクトリです。

IC コンテナーを使用すると、このようなコードを排除できますか? つまり、入力パラメーターのタイプに基づいて、ロードする具体的な実装を動的に選択できるようになりますか?

それとも私はここでコースから外れていますか?

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

.net - WindowsフォームのMVPとIOC?

いくつかのフォームで、WindowsフォームアプリでMVPパターンを使い始めました。これらのフォームはプレゼンターを作成し、プレゼンターに戻ります。

私は特定のフレームワークを使用していませんが、フォームは他のフォームを開くことができます。

プレゼンターが(ビューを介して)他のフォームを開くことができるように、この設定を変更する必要がありますか?これを行うにはIOCフレームワークを使用する必要があると思いますか?

これにより、UIで関連するフォームを開くためのロジックを配置する手間が省け、フォーム内からプレゼンターへの参照を削除できるようになります。

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

wpf - WPFアプリケーションで依存性注入は可能ですか?

主にユニットのテスト容易性を向上させるために、WPFアプリケーションで依存性注入の使用を開始したいと思います。私のアプリは主にMV-VMパターンに沿って構築されています。私はIoCコンテナのAutofacを見ていますが、それはこの議論にとってそれほど重要ではないと思います。

App.xaml.csでコンテナーを作成して解決できるため、開始ウィンドウにサービスを挿入するのは簡単なようです。

私が苦労しているのは、ViewModelsとServicesをユーザーコントロールにDIする方法です。ユーザーコントロールはXAMLマークアップを介してインスタンス化されるため、ユーザーコントロールを使用する機会はありませんResolve()

私が考えることができる最善の方法は、コンテナーをシングルトンに配置し、ユーザーコントロールにグローバルコンテナーからViewModelを解決させることです。これは、コンポーネントがServiceLocatorに依存している必要があるため、せいぜい中途半端な解決策のように感じます。

WPFで完全なIoCは可能ですか?

[編集]-Prismが提案されていますが、Prismを評価することさえ大きな投資のようです。もっと小さいものが欲しいです。

[編集]これが私が止められたコードフラグメントです

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

c# - 制御の反転/アスペクト指向の意味での .NET プロキシ オブジェクトとは何ですか?

制御の反転/アスペクト指向の意味でのプロキシ オブジェクトとは何ですか?

プロキシ オブジェクトとは何かについての良い記事はありますか?
なぜあなたはそれを使いたいのですか?
そして、C#でどのように書くのですか?

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

c# - コンソール アプリケーションの IOC?

IOC をコンソール アプリケーションに組み込むための優れたソリューションを思いつく人はいますか?

現時点では、次のメソッドで静的クラスを使用しています。

エクスペリエンスをシームレスにしたいのですが、コンソール アプリケーションからこれを実現する方法が思いつきません。

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

c# - StructureMapを使用してコードでデフォルトコンストラクタを定義する方法は?

コードで StructureMap (バージョン 2.5) の型の既定のコンストラクター (オーバーロードが存在する場合) を定義する方法がわかりません。

サービスのインスタンスを取得したいのですが、コンテナーはそれに Linq2Sql データ コンテキスト インスタンスを挿入する必要があります。

「ブートストラップ」メソッドでこれを書きました:

アプリを実行すると、次のエラーが発生しました。

StructureMap 例外コード: 202
PluginFamily MyNamespace.Data.SqlRepository.MyDataContext、MyNamespace.Data、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null のデフォルト インスタンスが定義されていません

Linq2Sql で生成された不要なコンストラクターをすべてコメントアウトすると、正常に動作します。

[StructureMap.DefaultConstructor]更新:ああ、属性を使用しないことを忘れていました。

0 投票する
5 に答える
11950 参照

asp.net - ASP.Net Web フォームで Castle Windsor を使用するには?

Windsor を使用して依存性注入を標準の asp.net Web フォームに接続しようとしています。私は HttpModule と CustomAttribute (以下に示すコード) を使用してこれを達成したと思いますが、解決策は少しぎこちないように見え、Windsor ですぐに使用できる、より適切にサポートされている解決策があるかどうか疑問に思っていましたか?

いくつかのファイルがすべてここにまとめて表示されています

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

inversion-of-control - IoC、コンストラクターでパラメーターと注入を混合しますか?

私は制御の反転(IoC) を初めて使用するので、データ構造/パラメーターと注入されたオブジェクトをクラスに渡したい場合を処理するための最良の戦略を知りたいと思っていました。

簡単な例:

ここでの最善の戦略は何ですか?直接注入はできないのでしょうか?

代わりにすべての文字列パラメーターをセッターとして配置し、コンストラクターに含める必要があると思いますIloggerか、それともその逆ですか?

それとも私が間違っていますか?

Ps 上記の例がひどいので、別のメソッド呼び出しで渡す必要があることはわかっていtoEmailますbodyが、それは単なる例を作成するためのものでした。

0 投票する
6 に答える
543 参照

c# - IOC デザイン リソース

私はこれについてかなりの検索を行いましたが、まとまりのあるものを見つけることができませんでした. 私は比較的新しい開発者で、最初の専門的な開発職に就いたばかりです。基礎の領域でも学ぶべきことがたくさんあることを知っています。PodCast を聞いたり、ブログや論文を読んだりすることに基づいています。ソフトウェアを設計および構築するときに、関心の分離、IOC、依存性注入を念頭に置くことが正しいことのように思われることを理解するようになりました。私は概念を非常に高いレベルで理解しており、マイニングでこれを使ってできる限り取り組みたいと思っています。

だから、ここに摩擦があります。どうやってこのようにデザインするのですか?私は、非常に緊密に結合され、文書化が非常に不十分で、一般的にソフトウェアの保守が容易ではない Web ベースの製品を継承したチームで働いています。Evryone は、このカップルの一部を削除するというアイデアを気に入っているようです。彼らは、自動化されたテストを開発するというアイデアを気に入っています (私が読んだ限りでは、疎結合コンポーネントの方が簡単です)。誰もそれを行う方法を知らないようです。試してみたいのですが、アドバイスが必要です。私が見つけたものはすべて、常にこのことについて非常に高いレベルで話しているように見えます。逆に、全体のほんの一部に焦点を当てているようです. 本、一連のチュートリアル、ビデオ、または現実世界の例を取り上げてこれらの原則を適用する方法を示す何かについてのガイダンスが欲しい. 理想的には、

私が見つけた包括的なトレーニング資料のほとんどが、初​​心者がその日から良い実践を適用できるようにこのトピックを議論していないことに少し不満を感じています. 1。

お時間をいただきありがとうございます。

スティーブ

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

wpf - IoC とユーザー インターフェイス

依存性注入のためにアプリケーション内で IoC を使用する最善の方法について頭を悩ませようとしていますが、少し問題があります。

WPF アプリで MVP パターンの緩やかな実装を使用しています。基本的に、プレゼンター クラスがインスタンス化され、ビューとタスク (EmployeePresenter の IEmployeeView と IEmployeeTask など) がプレゼンターに挿入されます。

これらのインスタンスを手動で注入する代わりに、IoC コンテナーを使用したいと思います (Unity を試していますが、これは ninject や Structure Map などの他のものでも発生すると思います)。 IoC コンテナー) を非同期デリゲート呼び出し、またはイベント スレッド (例: STA スレッドではない) で呼び出してから、WPF ウィンドウの新しいインスタンスを作成すると、次の例外がスローされます。

現在のビルド操作 (ビルド キー Build Key[ namespace .Window1, null]) が失敗しました: 多くの UI コンポーネントがこれを必要とするため、呼び出しスレッドは STA でなければなりません。

さて、新しいウィンドウ インスタンスなどを STA にする必要があることはわかっていますが、UI を STA スレッドで作成する必要がある場合でも、IoC コンテナーを使用して依存関係の挿入を行うことは可能ですか?

この問題を見ると、解決されているクラス/タイプは、登録時ではなく、解決時にインスタンス化されているように見えます...