可能重复:
为什么C#不允许静态方法实现接口?
在我的应用程序中,我想使用一个数据访问仓库(TestRepository
, SqlRepository
, FlatFileRepository
等)。由于这样的仓库将在整个应用程序中使用,因此将其设置为静态类似乎是很明智的做法,这样我就可以采取以下方式:
SqlRepository.GetTheThingById(5);
我希望我的存储库是可互换的,因此想要它们实现一个通用的接口:IRepository
。但是当我尝试这样做时,出现了以下错误:
静态类无法实现接口
为什么不能实现呢?你建议我如何更改设计?有可以使用的模式吗?
更新:
五年后:这个问题被访问了20k+次,我了解到存储库模式的缺点,学习了IoC,并意识到我的问题表述不太好。
我并不是真正地询问接口在C#规范中的含义,而是为什么它故意以这种特定的方式限制我。
实际上,答案是调用实例方法和类型方法的语法不同。但是这个问题已经关闭了。