【发布时间】:2011-10-05 17:00:18
【问题描述】:
因此,我们正在努力将工作中的一些项目从 Ninject 转换为 Autofac,并且我们偶然发现了 Ninject 中一些非常简洁的东西,我们无法弄清楚如何在 Autofac 中进行操作。在我们的应用程序中,我们有一个名为ISession 的接口,它以两种不同的具体类型实现。一个用于 Oracle 数据库,另一个用于 MS-SQL 数据库。
我们的 MVC 应用程序中有控制器,它们只需要 ISession 的一个具体实现,具体取决于它们被注入到哪个控制器中。例如:
Bind<IFoo>().To<Foo1>();
Bind<IFoo>().To<Foo2>().WhenInjectedInto<OracleController>();
我的问题是:我们如何在 Autofac 中获得相同的结果?当IFoo被注入任何控制器时,Foo1应该默认提供,但是在一种特殊情况下,我们需要Foo2来代替。
提前感谢您的帮助!
【问题讨论】:
标签: asp.net-mvc-3 dependency-injection inversion-of-control ninject autofac