問題タブ [ninject-2]

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

asp.net-mvc-2 - Ninject 2.0: 実装に応じて異なるパラメーターを渡す

ASP.NET MVC 2 で Ninject 2.0 を使い始めたばかりです。そのため、インターフェイス IMongoRepository とクラス MongoRepository があります。

MongoRepository は、パラメーター文字列のコレクションを受け取ります。

使用するコレクションに応じて、MongoRepository のパラメーターに異なる値を渡します。これが正しい言い回しであることを願っていますが、使用しているコントローラーに応じて異なるパラメーターをどのようにマッピングすればよいでしょうか?

たとえば、Article コントローラーでは、次のように呼び出します。

そして PageController では、次のように呼び出します。

私がやりたいことは、コンストラクター注入を行い、IMongoRepository を渡すことです。アイデアや提案はありますか?

ところで、私はちょうど IOC/DI について学んでいます。ですから、IOC 忍者からのヒントをお待ちしています。ありがとう!

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

wcf - Ninject 2.0 による依存性注入

Ninject に関するちょっとした質問です。

サービスとの通信に WCF の「二重チャネル」を使用しています。チャネルはインターフェイスとして定義されていますIMyChannel。簡単にするために呼び出しましょう。チャネルをインスタンス化するには、DuplexChannelFactory<IMyChannel>オブジェクトのCreateChannel()メソッドを使用します。これまでのところ、これでファクトリ クラスをバインドできました。

IMyChannelただし、 Ninjectを使用して作成するDuplexChannelFactory<IMyChannel>ため、インターフェイスをバインドする方法が少しわかりIMyChannelません。バインドするにはBind< IMyChannel>().???

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

ioc-container - Ninject 2.0 では、一般的なバインディングと特定のケースのバインディングの両方を使用するにはどうすればよいですか?

ユーザー オブジェクトに依存関係を挿入したいが、現在のユーザーを IoC コンテナーに配置したい状況があります。次の行を機能させたい:

次のようなバインディングが機能すると考えるかもしれません。

もちろん、次のようになります。

名前付きバインディングはそのバインディングの適用を制限しないため、エラーを理解しています。したがって、両方のバインディングが適用されます。.When*() メソッドでコンテキスト バインドを使用する必要があることは明らかですが、それを行う方法が思いつきません。名前付きインスタンスが適用されているかどうかを検出するメソッドがあるべきだと思います。何かのようなもの:

インターフェイス上に場所が見つからないかIRequest、要求された名前を教えてくれるプロパティです。どうすればいいですか?

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

dependency-injection - Ninject 2 で Common Service Locator を使用する方法

Ninject 2 の変更点によると、NinjectはCommon Service Locatorをサポートしていますが、どのように使用すればよいですか? マニュアルやサンプルが見つかりません。

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

wcf - WCFでNinject2を使用するには?

IoC と DI の .NET ライブラリを簡単に説明すると、私は Ninject2 を使用することにしました。DDD スタイルによると:

  • インフラストラクチャ: Entity Framework 4.0 .edmx モデルとリポジトリの実装があります
  • ドメイン層: POCO オブジェクトとリポジトリ インターフェイス (インフラストラクチャに実装) があります。
  • アプリケーション サービス: ドメイン層からリポジトリ インターフェイスで定義されたメソッドを呼び出す WCF サービスがあります。

私の質問は、Ninject2 を使用して WCF にリポジトリを挿入する方法です。Ninject2 に関するいくつかの記事を読みましたが、非常に単純な例が示されています (例: 同じクラス ライブラリでの依存性注入)。どんな指示も役に立ちます:)。

大変感謝します!

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

ninject - Ninject OnePerRequestModule に関連してスローされる断続的な例外

Ninject の既存の実装を 1.5 から 2.0 にアップグレードしました。短期間に多くのリクエストが発生すると、断続的な例外がスローされるようになりました。

これがスローされている例外です。

タイプ: System.ArgumentException
メッセージ:同じキーを持つアイテムが既に追加されています。
ソース: Ninject
スタック トレース:
System.Collections.Generic.Dictionary`2.Insert (TKey キー、TValue 値、ブール値の追加)
で System.Collections.Generic.Dictionary`2.Add で System.ThrowHelper.ThrowArgumentException(ExceptionResource リソース)で(TKey キー、TValue 値)
Ninject.Components.ComponentContainer.CreateNewInstance (型コンポーネント、型実装)
で Ninject.Components.ComponentContainer.ResolveInstance (型コンポーネント、型実装)
で Ninject.Components.ComponentContainer.Get (型コンポーネント)
Ninject.Components.ComponentContainer.<CreateNewInstance>b__6(ParameterInfo パラメータ)
で System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
で System.Linq.Buffer`1..ctor(IEnumerable`1 ソース)
で System.Linq .Enumerable.ToArray[TSource](IEnumerable`1 ソース)
Ninject.Components.ComponentContainer.CreateNewInstance(型コンポーネント、型実装)
で Ninject.Components.ComponentContainer.ResolveInstance(型コンポーネント、型実装)
で Ninject.Components.ComponentContainer. Get(コンポーネントの型)
Ninject.Components.ComponentContainer.GetT
で Ninject.KernelBase.CreateContext(IRequest リクエスト、IBinding バインディング)
Ninject.KernelBase.<>c__DisplayClassa.<Resolve>b__6(IBinding バインディング)
で System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x)
で System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext ()
System.Linq.Enumerable.<CastIterator>d__aa`1.MoveNext()
で System.Linq.Enumerable.Single[TSource](IEnumerable`1 ソース)
で Ninject.ResolutionExtensions.Get[T](IResolutionRoot ルート、IParameter [] パラメータ)
NameOfConsumingSite .Application_BeginRequest (オブジェクト送信者、EventArgs e) で...

web.configOnePerRequestModuleからアイテムを削除しても例外はスローされませんが、大量のオーバーヘッドが追加されます。httpModules

彼らが助けてくれるなら、私は前もって誰にでも感謝します!

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

ninject - Ninject 2で、設定が異なる2つのカーネルでバインディングを共有するにはどうすればよいですか?

アプリケーション用に、すべてのバインディングを含む単一のNinject2カーネルがあります。アプリケーションの1つのセクションは、カーネル上で他のアプリケーションとは異なる設定を持つ必要がありますが、同じバインディングが必要です(その部分は、NHibernateとニーズInjectNonPublic = true、およびInjectAttributeセット用です)。現在のカーネルとバインディングを共有しているが設定が異なるカーネルを作成するにはどうすればよいですか?

他のIOCコンテナーでは、これは「ネストされたコンテナー」で実現されると思いますが、Ninjectでネストされたコンテナーのサポートはありませんか?

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

c# - Ninject V2 InRequestScope:すべてのリクエストでコンストラクターを起動します

UnitOfWorkを管理するためのNinjectV2のInRequestScope()で苦労しています。

コンテナを介してUnitOfWorkをリクエストするときはいつでも、リクエスト全体で同じオブジェクトが常に返されることを期待しています。ただし、デバッガーでは、オブジェクトのコンストラクターにブレークポイントがあり、コンテナーに対して要求が行われるたびに、コンストラクターは新しいオブジェクトが作成されているかのように起動します。

誰かがこれと同じような経験をしたことがありますか、それとも私は何か重要なことを見逃していますか?

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

dependency-injection - Ninject.Web.MvcアドオンがASP.NETMVC2で機能しない

Ninject.Web.MvcASP.NET MVC 2で(MVC 2バージョン)アドオンを使用しています。これは私の抜粋ですGlobal.asax.cs

私もベースを持っていますRepositoryController

ご覧のとおり、これは非常に単純なセットアップでありRepositoryController、のインスタンスが注入されることを期待しておりIRepository、Ninjectはの具体的なインスタンスを使用するように構成されていますNHibernateRepository。ただし、これは機能せずRepository、コントローラーでアクセスしようとすると、プロパティはnullになります。ただし、代わりにコードをこれに変更すると、次のようになります。

その後、正常に動作します。コンストラクターインジェクションが機能しない理由を誰かが知っていますが、プロパティインジェクションは機能していますか?

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

ninject - Ninject 2 のコンテキスト変数

以前のバージョンの Ninject のコンテキスト変数に関するこの記事を見つけました。私の質問は 2 つあります。まず、Ninject 2 でこの動作を取得するにはどうすればよいですか? 第 2 に、コンテキスト変数はリクエスト チェーンを通過しますか? たとえば、これらの呼び出しを置き換えたいとしましょう:

... これとともに:

このようなバインディングを設定することは可能Cですか?