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

c# - Ninject、複数のサービス バインディング

Ninject を使用して複数のモジュールをロードしています。2 つのモジュールがインターフェイスの 2 つの異なる実装をバインドしようとすると、サービスの複数のバインドが許可されていないというエラーが ninject によって発生します。

私が使用している他のすべての IoC フレームワーク (Unity、Windsor、Spring.net など) にはすべて、インターフェイスの複数の実装を「登録」する機能があります。

実際の例を挙げましょう。

上記は例外を生成します。最後のモジュールに登録されたタイプを解決してカーネルにロードすることを期待しています。Autofac を使用してまったく同じアプローチを試みましたが、期待どおりに動作します。

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

c# - Ninject でデコレータを使用して一連の責任を宣言するにはどうすればよいですか?

Ninject でデコレータを使用して一連の責任を宣言したいと思います。

誰もそれをやったことがありますか?

ありがとう。

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

c# - 制御の反転コンテナーの制御の反転?

最近、Ninject 1.0 を使用する比較的大きなコントロール ライブラリを Ninject 2.0 に更新して、1.0 で発生したいくつかの問題を解決する必要がありました。アップデートはうまくいき、Ninject 2.0 の方がはるかに速いと思います。

ただし、将来この問題を回避するために、フィールドとプロパティを注入するための独自のインターフェイスを作成しました (これは、現在の Web アプリケーション内で使用したい IOC コンテナーのメソッドを本質的に呼び出します)。これで、私のコントロール ライブラリは特定の IOC コンテナーから独立し、将来その領域での変更が高速化されます。

私は他の誰かが同じことをしたのだろうかと思っていましたか?

達成したことに満足していますが、理想的には更新したいと思います。私のコントロールでは、これらの注入されたフィールドを頻繁に保護されたものとして作成し、そのコントロールのコンストラクターに設定します。

上記の問題は、実際にプロパティを設定するには、すべてのオブジェクトで「ref」を使用する必要があり、プロパティでそれを直接使用できないことです。

私はこれらの線に沿って何かをしたいのですが、それが可能だとは思いません。

コードをすっきりさせる方法や、よりクリーンな方法で動作させる方法について何かアイデアを持っている人はいますか? また、属性を避けたいので、開発者はコントロール内の特定のポイントで変数を挿入することを決定する必要があります。

すべての考えや感情は大歓迎です。

ありがとう

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

c# - Ninject (またはその他のコンテナー) を使用して、サービスを要求しているタイプを見つけるにはどうすればよいですか?

サービスのインターフェースがあるとします。

そして、ジェネリックであるそのサービスの具体的な実装:

そして、IFooService のインスタンスを必要とする他のクラスがあります。

Bar が作成されたときに FooService<Bar> のコンストラクター引数が渡されるように、IoC コンテナーを接続する必要があります。Bar と同じように、他にも多くのクラスがあります。また、それぞれに FooService<TRequestingClass> のインスタンスを渡す必要がある場合もあります。ここで、TRequestingClass は、IFooService のインスタンスを必要とするクラスの型です。この奇抜さを IFooService の消費者に公開する必要はありません。彼らが気にする必要があるのは、渡された IFooService のメソッドを呼び出すことができるということだけです。渡された IFooService の具体的な実装を構築するために特別なものが必要であることを知る必要はありません。

FooService<T> の代わりとして受け入れられるのは、作成対象のクラスの名前を含む文字列引数をコンストラクターに持つ非ジェネリック クラスです。すなわち:

このように IoC コンテナーを接続して依存関係を構築するにはどうすればよいですか?

なぜこのような奇妙な構造が必要なのか混乱している場合は、log4net.LogManager.GetLogger(typeof(SomeClass)) で作成された ILog を取得するときに log4net がどのように機能するかを検討してください。コードに log4net への参照を散らかしたくないので、単純な ILogger インターフェイスを作成し、次のように実装したいと思います。

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

windows-services - win サービスでの Ninject カーネル参照

いくつかのタスクを定期的に実行する単純な win サービスがあります。Ninject カーネルをすべてのタスク クラスに渡すにはどうすればよいですか?

基本タスク クラスの静的変数を作成し、サービスの開始時に初期化することをお勧めしますか?

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

dependency-injection - Ninject DIアプリケーションがActivationExceptionで失敗するのはなぜですか?

IoC/DIフレームワークは初めてです。私が最初に試しているのはNinjectフレームワークです。簡単そうに見えますが、コンソールアプリケーションを実行できません。次のようなActivationExceptionが発生し続けます。

私のコードはとてもシンプルです。これが私のプログラムファイルです...

これが私のninjectバインディングモジュールです...

これが注入されたクラスを受け取るクラスです...

そして、これが実際に注入されているクラスです...

そして最後に、注入されたクラスが実装する必要がある単純なインターフェイス...

誰かが私が間違っていることを見ることができますか?

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

webforms - WebフォームとDIオブジェクトのインスタンス化を使用したMVPパターン

データを永続化するために汎用リポジトリパターンを使用しています。PageLoadで、(IRepositoryから)新しいリポジトリを作成し、PageUnloadで、それを破棄します。

MasterPage / Pageは、プレゼンターに渡すオブジェクトのインスタンス化を担当する必要がありますか、それともプレゼンターがこれを担当する必要がありますか?プレゼンターに渡されるインターフェイスをモックする方が簡単なので、ページ(表示)よりもプレゼンターのテストに関心があります。

サンプルページ

この場合、StructureMapやNinjectなどのDIフレームワークは役に立ちますか?このような物の処分を担当するのでしょうか?

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

c# - アセンブリの読み込み後に実行されるC#メソッド

私はいくつかのC#クラスライブラリを作成し、Ninjectを使用してクラスに依存性注入を提供したいと考えています。クラスライブラリがロードされる各ファイルで実行されるコード(メソッド)をクラスライブラリが宣言することは可能ですか?Ninjectのバインディングを定義するためにこれが必要です。