ここは例です。Ninject(または任意のコンテナ)の工場/コンポジションルートに動的パラメータを渡します
foreach (var doc in documents)
{
var processor = this.factory.Create();
processor.Process(doc);
}
factory
は、内部kernel.Get<IDocumentProcessor>()
を呼び出します。
私はすべてのドキュメントプロセッサの依存関係の有効期間をこのコンポジションルートに「スコープ」したいと思います。この構成では、私がやりたいようだ:
kernel.Bind<IEntityContext>().To<EntityContext>().InCallScope();
今すぐドキュメントプロセッサをルートと各オブジェクトグラフは、データベースにアクセスするためのユニークな、共有エンティティのコンテキストを持っています。しかし、この
- は、アプリケーション内のどこでも、すべてのエンティティのコンテキストに影響を与えます(OKかもしれませんが、発見するのは難しいと思われる)、および
- は、静的について知らバインディングのために働くようです。
「コンテキスト」または動的情報で同じ有効範囲/有効期間の管理効果を達成するにはどうすればよいと思いますか?
var processor = this.factory.Create(doc)
processor.Process()
ありがとう:おそらく、私は、それ自体が新しいルートのすべての子に注入した文書インスタンスを持つようにしたいです! Ninjectで
申し訳ありませんが、私はあなたの問題が何か分かりませんでした。しかし、メソッド呼び出しに沿って文書を渡す最初の例は、通常の方法で行うべきです。 –
こんにちはレモ、あなたが今Ninjectでやっているすべての仕事に感謝します!私が意味することは:第2のケースでは、ドキュメントプロセッサのすべての依存関係が正しい* IDocument *を受け取れるようにしたいと思います。それは理にかなっていますか? –
あなたの投稿から私が知っていることから、docを依存関係として扱うのは間違っています。これはプロセッサの入力値によく似ているため、最初のオプションがより良く適合しているようです。しかし、問題全体を知らなくても答えを出すのは難しいです。 –