問題タブ [ninject]

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

dependency-injection - 依存性注入フレームワーク: なぜ気にするのですか?

Injection by HandNinjection (およびWhy use Ninject )を読んでいました。私は2つの混乱に遭遇しました:

  1. 手で注入する手法には既に慣れていますが、Ninjection には慣れていないため、完全なプログラムがどのように機能するかわかりません。おそらく、そのページで行われているように、プログラムを分割して示すのではなく、完全なプログラムを提供する方が役立つでしょう。

  2. これがどのように物事を簡単にするのか、私はまだよくわかりません。私は何か重要なものを見逃していると思います。インジェクションのグループを作成してから、2 つの大きなグループを一度に切り替える場合に、インジェクション フレームワークがどのように役立つかはわかりますが (これは、とりわけモックに役立ちます)、それ以上のものがあると思います。それより。しかし、私は何がわからない。あるいは、ポイントを強調するために、なぜこれがエキサイティングなのかを示す例がもっと必要なだけかもしれません。

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

asp.net-mvc - Ninject 2 を ASP.NET MVC で動作させるための適切なガイドを知っている人はいますか?

必要なものを正確に把握するためにドキュメントに苦労しています。とにかく、ドキュメントは(私の理解では)1.5用です。

注意: NinjectHttpApplication を拡張したくありません

Application_Start()でNinejctControllerFactoryを使用するように構成しましたが、コントローラーを作成しようとすると、 KernelContainer.Kernelで null 参照例外が発生します。NinjectHttpApplication を拡張しない場合、どこでカーネルを設定すればよいですか?

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

c# - 内部オブジェクトでの IoC の使用

現在、使用するプログラム用のオープン ソース SDK を作成しており、内部で IoC コンテナー (NInject) を使用してすべての内部依存関係を結び付けています。

内部としてマークされたオブジェクトがいくつかあるため、パブリック API を混雑させないようにしています。これらのオブジェクトは内部でのみ使用され、工場やその他のオブジェクトなど、ユーザーに表示されるべきではないためです。私が抱えている問題は、NInject が内部オブジェクトを作成できないことです。つまり、すべての内部オブジェクトをパブリックとしてマークする必要があり、パブリック API が混雑します。

私の質問は次のとおりです。この問題を回避する方法はありますか、それともすべて間違っていますか?

PS。InternalsVisiableTo 属性を使用することも考えましたが、それは少し匂いがするように感じます。

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

dependency-injection - NInjectでMembershipProviderをバインドするときにInSingletonScopeを使用する必要がありますか?

私はNInjectバインディングにかなり慣れていません。これが、NInjectの説明です。

  • TransientBehavior-タイプの新しいインスタンスは、要求されるたびに作成されます。
  • SingletonBehavior-タイプの単一のインスタンスのみが作成され、後続のリクエストごとに同じインスタンスが返されます。
  • OnePerThreadBehavior-このタイプのインスタンスがスレッドごとに1つ作成されます。
  • OnePerRequestBehavior-このタイプのインスタンスはWebリクエストごとに作成され、リクエストが終了すると破棄されます。

MembershipProviderをSqlMembershipProviderにバインドする場合、必要なSQLメンバーシッププロバイダーは1つだけなので、SingletonBehaviorを使用する必要がありますか?

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

asp.net-mvc - Ninject vs Unity for DI

ASP.netMVCを使用しています。

これらのどれが最高のDIフレームワークNinjectまたはUnityであり、その理由は何ですか?

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

c# - Ninject でのコンパイル エラー

Ninject は良さそうなので、自分のプロジェクトで使用したいと思います。残念ながら、私はまだ最も些細なバインディングを行うのに苦労しています。[Inject] 属性は問題なくコンパイルされますが、コンパイラは「Bind」コマンドを見つけることができません。

ここで何がうまくいかないのでしょうか?

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

ninject - 解決されたインスタンスをクリアするNinject

シングルトンとして設定されているバインディングがいくつかあります。すべてのシングルトンインスタンスをクリアする特定のポイントまで、常に同じインスタンスを返すようにします。バインディングを削除して再度追加するのではなく、作成されたインスタンスをクリアするだけです。これは可能ですか?

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

.net - Ninject:依存チェーンに基づいてバインディングをセットアップする方法

OK Dependency Ninja's、ここにあなたのための1つがあります...

カーネルから要求しているタイプに基づいて、Ninject が依存関係を構築する方法を変更したいと考えています。

次のコンストラクタを持つ DbConnectionFactory クラスがあります。

「デフォルト」バインディングの場合、Ninject にパラメーターなしのコンストラクターを使用してもらいます。

コード内の特定のクラスでは、connectionString パラメータを提供するために Ninject が必要です。私は次のようにバインディングをセットアップしようとしました:

ただし、Ninject でデフォルトのコンストラクターを使用することしかできません。

明らかな何かが欠けているに違いありません!

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

wpf - Ninjectを使用して依存関係をWPFに挿入する

依存性を注入したいWPFUserControlがあります。Ninjectでこれを行うための最良の方法は何ですか?

具体的な例を挙げると、MapViewというUserControlがあり、コンストラクターまたはプロパティインジェクションを介してIDialogueServiceのインスタンスをインジェクトしたいと考えています。現在、依存性注入を使用しておらず、コントロールはXAMLで作成されています。

IKernelの作成、およびIDialogueServiceのバインドは、十分に簡単です。しかし、カーネルを使用して依存性をMapViewに注入する方法に固執しています。私はまだNinjectの初心者なので、何かが足りないのは明らかなことかもしれません。

私はこれを解決するためのいくつかの方法を考えることができます:

  1. MapViewをコードでインスタンス化します。XAMLからを削除し、<MapView ... />代わりにこれをGameWindowのコンストラクターに追加します。

    欠点:XAMLを使用しないことによる複雑さの増大。GameWindowはIKernelに依存しています。

  2. XAMLでインスタンス化を維持し、代わりにプロパティインジェクションを使用します。

    欠点:Ninjectのドキュメントには、Inject()は「ほとんどの場合に使用すべきではない」と書かれているため、私が思っていることを実行できるかどうか、またはここで使用するのが理にかなっているのかどうかさえわかりません。そして、GameWindowはまだIKernelに依存しています。

  3. 注入可能なパラメータ/プロパティをGameWindowに追加して、値をMapViewに渡します(おそらくMapViewのプロパティを介して)。次に、を使用しますGet<GameWindow>()。欠点:現在、​​依存関係をあちこちに手動で渡しています。これは、DIフレームワークが自動化することになっているものです。

  4. ゲームウィンドウをインスタンス化した後、論理ツリーをたどり、すべてに対してIKernel.Inject()を呼び出します。欠点:繰り返しになりますが、Inject()が私が思うことを実行するかどうか、またはここで適切かどうかはわかりません。呼び出し元は、ゲームウィンドウをインスタンス化した後、視覚的なツリーをウォークアンドインジェクトすることを忘れないでください。

これを行うためのより良い方法はありますか?たぶん、NinjectのWPF拡張機能を使用するGet<GameWindow>()と、論理ツリーを自動的にウォークして(#4のように)、すべてに対してプロパティインジェクションを実行できますか?そのようなものが存在しない場合、私はそれを書くことができますか?

NinjectとWPFを使用してどのようにアプローチしますか?上記のアプローチのいずれかを使用していますか(使用している場合は、私が知らない長所/短所を共有できますか)?より良いアプローチはありますか?

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

asp.net-mvc - 中型のaspmvcの設計-ninjectの使用とオブジェクトの作成

asp.netmvcテクノロジを使用して中規模のWebサイトを設計しています。すべてのビジネスロジックは、IServices(IDomainService、IUserService、IAuthService、ITrainingServiceなど)に編成されています。すべてのサービスがIRepositoriesを使用しています。Ninject 1.5を使用してコントローラーとのサービスを配線していますが、完全に機能しているようです。

これまでのところ、私がどのように扱うべきかわからない主題が1つあります。一部のサービスは(リクエストごとに)コンテキストを作成します。たとえば、IDomainServiceはIUserServiceに必要なDomainContext(リクエストごと)を作成します。ITrainingServiceは、許可されたユーザーのみがアクセスできるTrainingControllerでのみ使用され、ITrainingServiceは、誰がトレーニングを受けているかを知るためにUserContext(これもリクエストごと)を必要とします。

これは、IoCコンテナを使用した最初のプロジェクトです。それを解決するためのデザインパターンやコードスキーマはありますか?ActionFiltersを使用してコンテキストオブジェクトを埋めることができると思いますが、それらの存続期間を管理する方法と、IServicesがアクセスできるようにする場所を教えてください。(エレガントな方法で)