我正在建立一个 MVC 项目。看起来像这样
EfDbContext : IDbContext { ... }
MyStuff : IMyStuff { ... }
MyService : IMyService {
List<things> GetSomething(IDbContext context, IMyStuff stuff) { ... }
}
MyController : Controller {
ActionResult MyAction(IMyService service) { ... }
}
我使用 StructureMap.MVC 来解决所有构造函数依赖项,以及用于审计和登录自定义 ActionFilters 的 setter 注入。我唯一需要在 IoC 中手动指定的是 IDbContext 的连接字符串,其他一切都自动工作!
直到我读到一些文章说,类和接口之间的比例是 1:1。我的应用程序非常简单,IMyStuff 或 IMyService 永远不会有不同的实现。我拥有它们的唯一原因是它们可以被注入和单元测试(我使用了 Rhino,但开始喜欢 NSubstitue)。
有没有办法我可以摆脱接口并直接注入具体类?所以看起来像
GetSomething(IDbContext context, MyStuff stuff) {}
MyAction(MyService service) {}
当然,我仍然希望所有基于约定的自动连接与 StructureMap,因此我不必一一指定它们。
谢谢。