可能重复:
为什么 C# 不允许静态方法实现接口?
在我的应用程序中,我想使用一个存储库来进行原始数据访问(TestRepository
、、SqlRepository
等FlatFileRepository
)。因为这样的存储库将在我的应用程序的整个运行时使用,所以将它设置为静态类对我来说似乎是明智之举,这样我就可以去
SqlRepository.GetTheThingById(5);
无需一直重新生成它。因为我希望我的存储库是可互换的,所以我希望它们实现一个通用接口:IRepository
. 但是当我尝试这样做时,我得到:
静态类不能实现接口
为什么他们不能?你如何建议我改变我的设计呢?有我可以使用的模式吗?
更新
五年后:这个问题被访问了 20k+ 次,我了解了存储库模式的缺点,了解了 IoC 并意识到我的问题表述得很糟糕。
我并没有真正问接口的 C# 规范是什么,而是为什么它故意以这种特定方式限制我。
实际的答案是在实例或类型上调用方法的语法是不同的。但问题已经结束。