4

オブジェクトのメソッドが true を返す限り、オブジェクトを複数の同時 Web リクエストで再利用する必要があるシナリオがあります。問題のオブジェクトはスレッドセーフです。

そのため、現在スコープ内にあるオブジェクトがまだスコープ内にあるかどうかを判断する必要があります。Ninjectでこれを達成する最良の方法は何ですか?

おそらくこの質問に答える必要はありませんが、目標は、基礎となるインデックスが変更されていない間に Lucene IndexSearcher / IndexReader を再利用することです。Reader には、インデックスが変更された場合に false を返すメソッド IsCurrent があります。

4

2 に答える 2

1

おい、独自のスコープ オブジェクトを定義できます。スコープ オブジェクトが生きていて変更されていない限り、ninject はバインドされた型の同じインスタンスを返します。カスタム スコープは、IsCurrent が false を返すかどうかを確認する必要があります。https://github.com/ninject/ninject.extensions.namedscope/tree/master/src/Ninject.Extensions.NamedScopeでカスタム スコープを実装する方法を確認でき ます。独自のスコープを開発する場合、GC 用にリリースされないオブジェクトを作成しないように注意する必要があります。

于 2012-07-08T15:39:00.310 に答える
0

あなたが望むものを達成するために私が最善を尽くすためには、プロバイダーを使用することです:

Bind<ILuceneIndex>().ToProvider(new LuceneIndexProvider());

プロバイダー内で再作成のロジックを適用します。

于 2012-07-06T09:06:19.740 に答える