【发布时间】:2016-04-17 10:53:22
【问题描述】:
我有一些旧代码可以访问我们的数据库。我想为单元测试中的 IoC/DI 类中的每一个类创建一个接口。
这些类中的所有方法都是静态的。
当我尝试通过 VisualStudio“提取接口”时,它失败并显示“无法提取接口:该类型不包含任何可以提取到接口的成员”。
有一些链接解释了为什么接口不应该有静态方法here 和here。
这个限制似乎主要是为了支持多态性......我现在并不真正关心这些类并没有真正从任何东西(除了 Object)继承。
那么我如何使用 IoC 来获取可以从中提取数据的对象?
我宁愿不创建实例方法,因为实例会增加工作集。
【问题讨论】:
-
你不能“注入”静态类——它们是在编译时绑定的。如果要使用注入,则必须注入实例。我建议克服您对“增加工作集”的恐惧,并处理如果以及何时成为问题。
-
"多态性 [...] 我现在并不真正关心。" 是的,你关心,因为你"想创建一个为单元测试中的 IoC/DI 这些类中的每一个提供接口。”
标签: c# .net unit-testing dependency-injection interface