2017-05-02 4 views
2

私はNinjectではMyClassを作成します。Ninject 'Get'メソッドのキャッシュ値を指定できますか?

if(myClass!=myClass1) //true 
    {} 

var myClass=kernel.Get<MyClass>(); 

Ninjectは私が

var myClass1=kernel.Get<MyClass>(); 

?:を呼び出すとき、Ninjectは、2つのオブジェクトを作成します(古いまたはリターン)新しいオブジェクトを作成してい

しかし、私はNinjectによってキャッシュされたオブジェクトを取得できますか?

+0

Ninjectのデフォルトのスコープが一時範囲ではあります。したがって、 '()'を2回呼び出すと、2つの異なるオブジェクトが返されます。 –

答えて

1

詳細については、Ninject Object Scopesをご覧ください。 たとえば、あなたがタイプの1つのオブジェクトのみを必要とする場合、あなたはSingletonScopeに登録することができます

kernel.Bind<Shogun>().ToSelf().InSingletonScope();

他のスコープのバリエーションがあります。 ASP.NETで作業している場合は、ほとんどの場合、オブジェクトを登録してキャッシュするには、RequestScopeにしてください。または、高度なキャッシュ規則のカスタムスコープを常に作成できます。

2

あなたが探しているように見えるのは、スコープです。 Ninject documentation

Ninjectはコードを経由して何かを実装することなく、それ既に作成されて簡単に再利用インスタンス、 作るの対応するセクションを参照してください。あなたがする必要があるのは、 Ninjectにシングルトンスコープでクラスをバインドするよう指示するだけです。

4ビルトインNinjectで利用可能なスコープ、および拡張機能を介して配信 他人の数...

関連する問題