問題タブ [simple-injector]

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 投票する
2 に答える
2918 参照

dependency-injection - Simple Injector に Unity のような IContainer 抽象化がないのはなぜですか?

前回のプロジェクトで Unity を使用しましたが、概ね満足しています。しかし、ベンチマークでは、次のプロジェクトでは Simple Injector を使用する可能性があると考えています。

Containerただし、Simple Injector にはそのクラスのインターフェイスがないようです。これは、メソッドでコンテナを使用したいときはいつでも、単体テストのためにコンテナをモックできないことを意味します。

インターフェイスに基づいて実際に機能するツールが、それ自体がコンテナーへのインターフェイスを作成しないことに混乱しています。依存性注入の古典的な方法では、起動以外の場所にコンテナーが必要ないことを私は知っています。(残りはコンストラクター注入を使用します。)しかし、ゴムが道路にぶつかったときに、常にそうであるとは限らないことがわかりました。コードで「解決」を行うためにコンテナーが必要な場合があります。

Simple Injector を使用すると、そのコードの単体テストが難しくなるようです。

私は正しいですか?または、何か不足していますか?

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

c# - SimpleInjector の検証 - *新しい* 項目を明らかにするために、警告を許容可能としてマークすることは可能ですか?

SimpleInjector の検証機能により、修正が必要な問題が浮き彫りになることがあります。ただし、私が満足している「潜在的な」問題がいくつかあります。SimpleInjector に問題がないことを伝える何らかの方法が必要です。残りについて教えてください...

  • 構成警告 複数のグループで警告が検出されました。
    • 潜在的なライフスタイルの不一致 1 つのサービスに対して 1 つの不一致の可能性があります。
      • IObjectMaterializedSubscriber ObjectMaterializedSubscriberIEventPublisher(生涯スコープ) は(一時的)に依存します。
    • 潜在的な単一責任違反 2 つの違反の可能性。
      • ILetterGenerator<A> LetterGenerator<A>には、SRP 違反を示している可能性のある 9 つの依存関係があります。
      • ILetterGenerator<B> LetterGenerator<B>には、SRP 違反を示している可能性のある 9 つの依存関係があります。

一時的なものとしての最初の警告IEventPublisherは問題ありません。他の 2 つの警告 (私は推測しています) は、SimpleInjector デコレーター機能を使用して責任の連鎖を構築したことが原因です。

コンテナがすべて問題ないように見えることを報告できるように、これらの特定の警告を承認済みとしてマークできるようにしたいと考えています。

これは可能ですか?

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

c# - SimpleInjector を介してシングルトンを登録し、実装するさまざまなインターフェイスに対して同じインスタンスを返す

以下があると想像してください:

上記のクラス/インターフェイスのインスタンスを IoC 経由で取得しようとすると、タイプごとに 1 つのシングルトンではなく、まったく同じインスタンスが取得されることを望みます。例、b1およびb2以下が当てはまる必要があります。

これは可能ですか?

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

c# - 同じインターフェースの異なる実装を登録して使用する方法は?

次のシナリオがあるとします。

したがって、チャネル 0 と 1 を持つ 2 つの ServicePiGreek と、チャネル 0 を持つ ServiceEuler を作成します。

私はこれについて考えました:

これを達成する方法について誰かがより良いアイデアを持っていますか?

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

asp.net-web-api - Web API セルフ ホスト アプリとシンプル インジェクターでの LifetimeScoping エラー

これら ( ++++ ) のページを読みましたが、どうすればよいかわかりません。

私はこの単純なインターフェースと具象型を持っています:

私はこれを作成しますDependencyResolver

サーバーを次のように構成しました。

そして、これは私のコントローラーです:

ここで、アクション メソッドを呼び出すと、次のエラーが発生します。

スレッド間で LifetimeScope インスタンスを使用するのは安全ではありません。ライフタイム スコープが囲む完全な操作が同じスレッド内で実行されることを確認し、LifetimeScope インスタンスが作成されたときに同じスレッドで破棄されることを確認します。Dispose は ManagedThreadId 28 のスレッドで呼び出されましたが、ID 29 のスレッドで作成されました。

私はどこで間違っていますか?助けていただけますか?

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

.net - SimpleInjectors 診断の結果をログ ファイルに書き込むことはできますか?

SimpleInjector を使用して構成の最後に呼び出し、ドキュメントcontainer.Verify()で説明されているようにデバッガーで診断情報を取得します。その情報をログファイルに書きたいと思います。プログラムでアクセスする方法、またはロガーまたはトレーサーを SimpleInjector にフックする方法はありますか?

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

c# - 外部 dll からロードされたコントローラーを解決できません

さまざまな CRUD およびクエリ操作を公開する必要がある IoC コンテナー (この場合は単純なインジェクターですが、この問題はそのコンテナーに関連しているとは思いません) で MVC4 Web API を使用して Web API を構築しています。私の場合に IOC を使用する理由は、私たちが開発ショップであり、顧客が独自の Web API コントローラーを構築して、システムから必要なデータを公開できるようにする必要があるためです。その結果、私は自分のソリューションを設計して、私たちと私たちの顧客の両方のすべてのコントローラーを外部に作成し、IOC を介してロード可能にすることで、自分の製品をドッグフードできるようにしたいと考えていました。

ウェブサイトにはライブラリへの参照はありませんが、ライブラリにはウェブサイトで使用したいコントローラーが含まれています。型はコンテナーに登録され、DependencyResolver はカスタムの依存関係リゾルバーに設定されます。dllプラグインを見つけてコントローラータイプをロードするコードがありますが、それが表すルートに移動しようとすると、見つからないと言われます。

つまり、/api/Test1Api に移動しようとすると、"hello world" というテキストが表示されます。

ここでの問題は、コントローラーの種類を読み込んだにもかかわらず、それを Web サイトが示すルートに変換できないことです。

エラーが発生します

リクエスト URI に一致する HTTP リソースが見つかりませんでした

「Test1Api」という名前のコントローラーに一致する型が見つかりませんでした。

コンテナを登録する方法は次のとおりです

どんな助けでも大歓迎です。