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