guy*_*uyl 1 c# unit-testing dependency-injection inversion-of-control
当使用IoC进行依赖注入时,最推荐的用法是构造函数注入(正如许多文章所述),我的问题是:
使用构造函数参数注入或通过构造函数传递IoC容器注入所需的类是什么更好对单元测试更有用吗?
使用构造函数/属性注入更好.当您将IOC容器传递给构造函数时,您不再执行依赖注入和控制反转.您正在执行服务定位器模式.这意味着类不再获取消费者注入的依赖项,但他们尝试尝试获取它们.您也可能将代码绑定到某个特定的DI框架.
尽管通过构造函数传递容器比使容器作为完整应用程序的单例可访问更好,但它仍然是Service Locator(反模式)的一种形式,不建议使用.这有明显的缺点:
只需将依赖项注入构造函数,而不是容器本身.
*此规则的例外情况是此类位于appliation的Composition Root中.在这种情况下,它不被认为是简单定位器模式,因为该类只是一个基础结构组件.
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |