1

我正在建立一个 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,因此我不必一一指定它们。

谢谢。

4

0 回答 0