c# - 为什么静态类不能实现接口(interface)?

标签 c# .net interface static-classes

<分区>

Possible Duplicate:
Why Doesn’t C# Allow Static Methods to Implement an Interface?

在我的应用程序中,我想使用一个将执行原始数据访问的存储库(TestRepositorySqlRepositoryFlatFileRepository 等)。 因为这样的存储库将在我的应用程序的整个运行时使用,所以对我来说将其设为静态类似乎是明智的,这样我就可以去

SqlRepository.GetTheThingById(5);

无需一直重新生成它。 因为我希望我的存储库可以互换,所以我希望它们实现一个通用接口(interface):IRepository。 但是当我尝试这样做时,我得到:

Static classes cannot implement interfaces

为什么他们不能? 那你建议我如何改变我的设计?有我可以使用的模式吗?

更新
五年后:这个问题被访问了 20k+ 次,我了解了存储库模式的缺点,了解了 IoC 并意识到我的问题表述不当。

我并不是真的在问接口(interface)的 C# 规范是什么,而是为什么它故意以这种特定方式限制我。

实际的答案是在实例或类型上调用方法的语法是不同的。但问题已经结束。

最佳答案

接口(interface)不能有静态方法。实现接口(interface)的类需要将它们全部实现为实例方法。静态类不能有实例方法。 QED.

2022 年更新:.NET 7 确实支持 static interface methods .

关于c# - 为什么静态类不能实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266422/

相关文章:

c# - 滚动条TableLayoutPanel c#

c# - 事件总线实现问题

objective-c - 接口(interface)定义在ios示例代码中重复

c# - 没有任何成员的接口(interface) - 不好的做法?

go - 两个字符串具有相同的指针地址

c# - 从剪贴板复制到剪贴板会丢失图像透明度

c# - 管理常量列表

c# - 从服务中获取当前的 UserProfile 路径

c# - 使用 Reactive Extensions、嵌套订阅按组缓冲

c# - 以编程方式创建 Windows 用户 c# .net(使用 PricinpalUser/CreateProfile)