这是一个例子。
foreach (var doc in documents)
{
var processor = this.factory.Create();
processor.Process(doc);
}
factory
内部调用kernel.Get<IDocumentProcessor>()
。
我希望所有文档处理器的依赖项的生命周期都“限定”到此组合根目录。这种配置似乎符合我的要求:
kernel.Bind<IEntityContext>().To<EntityContext>().InCallScope();
现在,以文档处理器为根的每个对象图都有一个唯一的共享实体上下文,用于访问数据库。但是这个
我认为我的问题是,如何通过“上下文”或动态信息实现相同的范围/生命周期管理效果?也许我希望将文档实例本身注入到新根的所有子项中:
var processor = this.factory.Create(doc)
processor.Process()
谢谢!
答案 0 :(得分:1)
使用Ninject 3.0.0,你可以做到
kerne.Get<IProcessor>(new ConstructorArgument("doc", doc, true));
但对我来说,似乎还有一个设计缺陷,即将doc作为处理器的依赖。通过将文档传递给Process方法,最好创建一次处理器并将其重用于多个文档。由于问题没有显示实际问题,我仍然没有得到这个问题。