1

我有一个奇怪的案例,我正在使用 NInject,但我不确定如何继续。在这个实例中,我们的存储库是自定义编写的 sql 生成器,而不是使用 linq to sql;n休眠等。

为了利用系统中的代码,我们在存储库的实现中注入所需的存储库来构建子对象(例如,“订单”对象需要获取其“订单详细信息”对象并将其分配给订单在将其返回到系统中的调用区域之前,因此在我们的 OrderRepository 中,我们有一个 [Inject]IOrderDetailRepository OrderDetailRepo { get; set; })。

直到此时,我们已经能够保持一切配置的 InRequestScope()。现在我们使用 Parallel ForEach 循环,在迭代完成后,我们将事件触发到单例范围的事件处理程序以更新数据库。我们会在循环内进行更新,但一直试图避免将循环与系统中的特定区域绑定,因为可能有很多区域可以使用这个循环。

因此,我们需要弄清楚当我们调用这个单例范围的事件处理程序时,如何配置 ninject 以使该单例事件处理程序中使用的所有 IRepositories(IOrderRepository 和 IOrderDetailRepository)都消失并在使用时立即初始化。

任何提示?


所以,我有“A”的解决方案,但我对这个解决方案不满意......我所做的是建立一个 ChildKernel,然后按照我想要的方式设置绑定。尽管这按预期工作,但感觉就像一些严重的“代码异味”。如果存在的话,希望看到一种更好的方法来处理这种情况。

4

0 回答 0