問題タブ [constructor-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.

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

mvvm - AvalonDock を使用してインスタンス化された ViewModel を View に注入する

AvalonDock の LayoutItemTempate にバインドされた ViewModel の Observable Collection があります。ユーザーが取得したリストから問題を開くと、監視可能なコレクションに新しい ViewModel が作成されます。その結果、新しいドキュメントが作成されますが、これは新しく、コレクションの ViewModel を使用していません。

コンバーターを使ってみたのですが、全然コンバーターを使っていないようです。誰かが代替案を知っていますか? おそらく、コード ビハインド ソリューションでさえありますか?

メインの XAML スニペットを次に示します。. .

私のコンバーターコード。. .

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

inversion-of-control - MvvmCross: IMvxLocationWatcher が 3.0.13 で解決できない

ソリューションを 3.0.9 から 3.0.13 にアップグレードしました。すべてうまくいくようです。この素晴らしいフレームワークに継続的に取り組んでいる MvvmCross チームに感謝します。

減価償却された IMvxGeoLocationWatcher を IMvxLocationWatcher に置き換える際に、わずかな問題が発生しています。IMvxLocationWatcher のインスタンスを取得するためにコンストラクター インジェクションに依存するこれらのサービスは、以下に示すように System.TypeLoadException をスローするようになりました。

私は何が欠けていますか?

再度、感謝します。

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

dependency-injection - 設計アプローチ - 単純なアプリケーションでの DI の使用

こんにちは、設計上の問題を考えすぎていないかどうかを確認したいと思います。私は DI/IoC/TDD にまったく慣れていないので、明らかな間違いを犯していたら申し訳ありません。

取引ログから読み取り、XML を読み取り、データベースに保存する単純なアプリケーションがあります。

理想的には、DI と場合によっては IoC を使用した TDD アプローチを使用して、このアプリケーションを作成したいと考えています。

そこで、いくつかのコードを作成しました (以下を参照)。

ここでの問題は、このコードをテストするときに DataRepository オブジェクトをモックできないことです。

そこで、次のような DI を検討しました。

私のプログラム クラスでは、IDataRepository クラスを渡すことができますが、これは多すぎますか? これも正しいアプローチですか?明らかな何かが欠けているのではないかと少し心配していますか?

テスト容易性に関しては、モック化された IDataRepository オブジェクトを ITradeXMLProcessor クラスに挿入して処理することはできますが、データベースに保存することはできませんが、そのような単純な操作を本当にモックする必要がありますか? それから本当に得られるメリットが見えないのですか?

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

c# - Web API コントローラーのコンストラクターはどのように呼び出されますか?

この記事によると、コントローラーには、実装されるインターフェースを取得するコンストラクターが必要です。

しかし、このコンストラクターはどのように呼び出されるのでしょうか? このクラスに含まれる Web API メソッドを呼び出すクライアントを介して計算されますが、どのようにして Interface 型が渡されるのでしょうか? それとも、そうする必要はありませんか (コンストラクターは誰からもどこからも明示的に呼び出されません)。

アップデート

正規の例では、Interface 宣言の前に「private readonly」が追加されていますが、コンパイルする必要はありません。「プライベート読み取り専用」を先頭に追加するためのコンパイル、つまり説得力のある理由はありますか?

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

c# - Simple Injector で複数のコンストラクターと文字列の依存関係を持つ型を登録する

Simple Injector の使用方法を理解しようとしています。単純なサービスとそのコンポーネントの登録に問題なくプロジェクトで使用しました。

ただし、インターフェイスを実装するコンストラクターが 3 つ以上あるコンポーネントがある場合は、依存性インジェクターを使用したいと考えていました。

サービスを登録する方法は次のとおりです。

コードを実行すると、次のエラーが発生します。

コンテナーが DAL を作成できるようにするには、パブリック コンストラクターを 1 つだけ含める必要がありますが、コンテナーには 2 つ含まれています。

コンストラクターを削除した後の次のエラーは、コンストラクターがパラメーターを受け入れられないことです。

DAL 型のコンストラクターには、コンストラクター インジェクションに使用できない String 型のパラメーター 'databaseInstance' が含まれています。

クラスに 2 つ以上のパブリック コンストラクターがある場合に依存性注入を行う方法はありますか? または、パラメーターを受け入れるパブリック コンストラクターを 1 つ持っていますか?

ここでドキュメントを読みました:SimpleInjector(Getting Started)

ドキュメントは理解しやすいように始まりますが、指数関数的に複雑になり、彼らが言及する後者の例のいずれかが私の問題に関連しているかどうかを解読しようとするのに苦労しています.