【发布时间】:2011-02-28 11:16:14
【问题描述】:
据我所知,DI 的优势在于:
- 减少的依赖关系
- 更多可重用代码
- 更多可测试代码
- 更具可读性的代码
假设我有一个存储库 OrderRepository,它充当通过 Linq to Sql dbml 生成的 Order 对象的存储库。我无法使我的订单存储库通用,因为它执行 Linq Order 实体和我自己的 Order POCO 域类之间的映射。
由于 OrderRepository 必然依赖于特定的 Linq to Sql DataContext,因此不能真正说 DataContext 的参数传递使代码可重用或以任何有意义的方式减少依赖关系。
这也使代码更难阅读,因为要实例化我现在需要编写的存储库
new OrdersRepository(new MyLinqDataContext())
这也与存储库的主要目的相反,即从消费代码中抽象/隐藏 DataContext 的存在。
所以总的来说,我认为这将是一个非常糟糕的设计,但它会带来促进单元测试的好处。这是足够的理由吗?还是有第三种方法?我很想听听意见。
【问题讨论】:
标签: c# unit-testing design-patterns dependency-injection dependencies