首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ninject

使用Ninject
EN

Stack Overflow用户
提问于 2013-10-31 05:29:09
回答 1查看 1.2K关注 0票数 2

我想做以下几件事:

代码语言:javascript
复制
        kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<OrderRepository>()
            .InRequestScope();

        kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<InvoiceRepository>()
            .InRequestScope();

        kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<PayslipRepository>()
            .InRequestScope();

从逻辑上讲,我希望为请求创建一个UnitOfWork<OrderDbContext>实例,并将其作为IUnitOfWork注入到任何OrderRepositoryInvoiceRepositoryPayslipRepository中。

相反,正在发生的是为每个存储库创建一个新实例 of UnitOfWork<OrderDbContext>

我认为,如果我将这些存储库上的IUnitOfWork构造函数参数替换为新的“虚拟”IOrderUnitOfWorkIInvoiceUnitOfWorkIPayslipUnitOfWork接口,这些接口只会继承IUnitOfwork并绑定到Ninject配置中的接口,那么它应该可以工作,但我不想创建空的虚拟接口,只为了让Ninject工作:(

我在找这样的东西:

代码语言:javascript
复制
        kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<OrderRepository, InvoiceRepository, PayslipRepository>()
            .InRequestScope();

但这是不存在的,我也找不到任何可链接的方法来实现同样的工作。

非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2013-11-03 19:06:04

尝试创建一个新的UnitOfWork并将其绑定为常量IUnitOfWork:

代码语言:javascript
复制
    UnitOfWork<OrderDbContext> work = new UnitOfWork<OrderDbContext>;

    kernel.Bind<IUnitOfWork>().ToConstant(work).WhenInjectedInto<OrderRepository>().InRequestScope();

    kernel.Bind<IUnitOfWork>().ToConstant(work).WhenInjectedInto<InvoiceRepository>().InRequestScope();

    kernel.Bind<IUnitOfWork>().ToConstant(work).WhenInjectedInto<PayslipRepository>().InRequestScope();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19699075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档