拦截注射

时间:2011-07-13 16:23:10

标签: c#-4.0 ninject ninject-2

我正在将一个存储库注入一个类中,一旦我注入了存储库,我就将我的上下文分配给每个存储库,这样我就有了我的工作单元。

我想弄清楚的是,有没有办法在我注入时自动将我的工作单元分配给每个存储库,以便开发人员在设置代码时不必考虑这一点。我已经在我的基类中配置了我的工作单元,开发人员将继承该工作单元。

我能做点什么吗?

Bind<I>().To<S>().WhenInjectedInto<IBaseClass>( i,b => { i.UnitOfWork = b.UnitOfWork });

但不必每次都重复这种模式?

[UPDATE] 我正在研究如何弄清楚Ninject是否正在注射以及 https://github.com/ninject/ninject.extensions.interception

我正试图通过测试来看看这是否远离基础。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我认为更好的方法是使用构造函数注入将上下文注入存储库。在Web项目中,您可以使用InRequestScope进行上下文绑定。对于WPF / WinForms / Console应用程序,请查看Ninject.Extensions.NamedScope。您可以定义单个上下文用于IBaseClass的所有依赖项。