問題タブ [ninject-extensions]

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 に答える
144 参照

c# - Ninject 3.0.1.10 + factory エクステンションなし tofactory メソッド

.NET ioc コンテナーには Nineject を使用します。ファクトリーメソッドを使いたいのですが、できません。.ToFactory メソッドはありません。

Ninejct for .NET 3.0.1.10 の Ninject.Extensions.Factory 拡張機能をプロジェクトに追加し、CastleCore 3.0 をプロジェクトに追加した後、ToFactory メソッドを呼び出したいのですが、表示されません。

ToMethod、ToProvider メソッドはありますが、ToFactory はありません

私はこのコードを試しました:

この上

ToFactory メソッドを呼び出せないのはなぜですか?

NuGet が ninject 3.0.2 prerelease ninject for .net をインストールしたことがわかります

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

ninject - Ninject Factory - ファクトリ メソッドで呼び出されるオブジェクトの代わりに渡される「新しい」オブジェクト

Ninject Factory Extensions を使用して、注入されたサービスとカスタム値を持つオブジェクトを作成できるようにしています

それで:

次にモジュールで:

実際のファクトリはクラスのコンストラクターに注入され、次のように使用されます。

_artifact のタイプは GameArtifact です

次に、各実装のコンストラクタ サービスに加えて、渡されたオブジェクトが注入されます。GameArtifact は最初のコンストラクターで正常に渡され、2 番目のコンストラクターでは「新しい」GameArtifact が渡されます。つまり、null ではなく、フレームワークがちょうど呼び出したかのようにデフォルト値のみを持つものです。

既存のものを渡す代わりに!

2 つのオブジェクトのコンストラクターは非常に似ていますが、動作しないコンストラクターは次のようになります。

ファクトリとサーブが Ninject によって注入され、ga がファクトリ経由で渡されることが想定されている場所。

私が渡したものではなく、新しい「新鮮な」オブジェクトが渡された理由は誰にも分かりますか??

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

wcf - Ninject 3、WCF サービス、およびパラメーター化されたコンストラクター

IIS でホストされている WCF サービスがあります。このソリューションは、Service と Data の 2 つのプロジェクトで構成されています。サービスは次のようにデータに依存します。

次のように、依存関係を逆転させようとしています。

WCF サービス コンストラクターは (既定で) パラメーターを使用しない必要があるため、WCF を使用する場合、これはかなりの頭痛の種です。

Ninject とその WCF 拡張機能を使用して依存関係を挿入できると聞いたので、それを自分のソリューションに統合しようとしましたが、関連するファイルと参照をどのプロジェクトに置くべきかまだわかりませんか? 私がしたことは:

  1. NuGet を使用して Ninject をダウンロードする
  2. データ プロジェクトとサービス プロジェクトの両方に Ninject を追加します (これにより、サービス プロジェクトの App_Start フォルダーに NinjectWebCommon ファイルが作成されます)。
  3. サービス プロジェクトで IDataProxy インターフェイスを作成する
  4. データ プロジェクトにインターフェイスを実装する
  5. IDataProxy 引数を WCF サービス コンストラクターに追加する
  6. .svc ファイル マークアップに工場出荷時の設定を追加

その時点まで、私はそれを正しく行っていると確信しています。今不安定な部分:

  1. このコードを使用して、データ プロジェクトにDataInjectionModule を作成しました。

    /li>
  2. 私は最終的に、NinjectWebCommonファイル(確かに両方のプロジェクトの)にサービスを登録しようとしました:

    /li>

サービスを開始しようとすると、次のようになります。

指定されたサービス タイプは、デフォルト (パラメーターなし) のコンストラクターを持たないため、サービスとして読み込むことができませんでした。この問題を解決するには、既定のコンストラクターを型に追加するか、型のインスタンスをホストに渡します。

問題は、DataInjectionModule をカーネルにバインドしなかったことにあると感じていますが、バインドしようとすると、Service から Data への依存関係を追加する必要があります。これは回避しようとしていることです。

一般的な専門家のアドバイスをいただければ幸いです。ありがとう。

0 投票する
0 に答える
72 参照

.net - セッションのコールスコープを機能させることができません

Ninject で IDocumentSession の依存関係をスコープするのに問題があります。

バスがコマンドを実行するたびに、新しい IDocumentSession が必要になります。ファクトリによって作成されたコマンド ハンドラには、同じ IDocumentSession のインスタンスが挿入されている必要があります。バスを CallScope に入れるとうまくいくと思いましたが、AsFactory は CallScope を壊すと思いますか? どうすればこれを達成できますか?

コンテキスト保存も試しましたが、違いはありません。

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

c# - WCF / Ninject / デフォルト (パラメーターなし) コンストラクター

WCF Ninject 拡張機能を使用して WCF サービスに Ninject を追加しようとしています。

エラーが発生します:

指定されたサービス タイプは、デフォルト (パラメーターなし) のコンストラクターを持たないため、サービスとして読み込むことができませんでした。この問題を解決するには、既定のコンストラクターを型に追加するか、型のインスタンスをホストに渡します。

このサービスには Ninject Service Host ファクトリがあります。

global.asax ファイルは NinjectHttpApplication から継承し、CreateKernel は NinjectModule を持つ新しいカーネルを返します。

NinjectModule:

コンストラクター注入によるサービス:

プロパティ注入を伴うサービス:

コンストラクター注入を使用すると、投稿の上部に記載されているエラーが発生します。プロパティ インジェクションを使用しようとすると、_ScheduleBusiness は常に null になります。

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

0 投票する
0 に答える
219 参照

unit-testing - 抽象クラスの MockingKernel による部分的なモッキング?

単体テストしたい依存関係を持つ抽象クラスがあります。

NInject のMockingKernelを使用してこのクラスをテストしたいので、次のようにまとめました。

しかし、私は問題に直面しています。モック化された IDependency を渡すのではなく、部分的な BaseClass モックを作成するパラメーターなしのコンストラクターを探しています。

sourceを見ると、 MockingKernel は作成時にモックに引数を渡すことはないようです。

MockingKernel で部分モックを作成する方法はありますか?

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

wcf - WCF サービスの NinjectServiceHost が Dispose() を呼び出さない

Ninject の NinjectServiceHost を使用しているときに、IDisposable WCF サービスで Dispose メソッドを呼び出しようとしましたが、うまくいきませんでした。次に、Ninject.extensions.WCF のサンプル コードをダウンロードし、IDisposable TimeService の Dispose() メソッドを呼び出そうとしましたが、呼び出されませんでした。

Dispose() が呼び出されないだけで、サービスは正しくインスタンス化されます。

これはバグですか、それとも私自身とサンプル コードに欠けているものですか?

問題を再現する、簡素化されたサービスとテスト ホストを作成しました。コードは以下です。

私はNinject 3.0.1.10、Ninject.extensions.WCF 3.0.0.5、.net 4.5を使用しています

ServiceModule.cs コード (バインディングの設定用)

サービスを開始するためのコンソール テスト プログラム。

サービスの実装

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

c# - リスト内のアイテムを 1 つだけ解決する> ニンジェクトで

これは私のシナリオです:

質問:

ここで、動物のリストはクラス Foo に遅延注入されます。

Line * with のようなことをしたいですNinject。ご存知かもしれませんが、問題は、クラスを解決する前に、GetType()が返されることNullです。では、いつでもリスト内の項目の 1 つだけを解決するにはどうすればよいでしょうか?

そのようなことはできますNinjectか、それとも DI コンテナーを変更する必要がありますか?