【发布时间】:2010-11-18 23:32:40
【问题描述】:
可能重复:
Why Doesn’t C# Allow Static Methods to Implement an Interface?
在我的应用程序中,我想使用一个存储库来访问原始数据(TestRepository、SqlRepository、FlatFileRepository 等)。
因为这样的存储库将在我的应用程序的整个运行时使用,所以将其设置为静态类对我来说似乎是明智之举,这样我就可以去
SqlRepository.GetTheThingById(5);
不必一直重新生成它。
因为我希望我的存储库可以互换,所以我希望它们实现一个通用接口:IRepository。
但是当我尝试这样做时,我得到:
静态类不能实现接口
他们为什么不能? 你如何建议我改变我的设计呢?有没有我可以使用的模式?
更新
五年后:这个问题被访问了 20k+ 次,我了解了存储库模式的缺点,了解了 IoC 并意识到我的问题表述得很糟糕。
我并没有真正问接口的 C# 规范是什么,而是为什么它故意以这种特定方式限制我。
实际的答案是在实例或类型上调用方法的语法是不同的。但是问题已经结束了。
【问题讨论】:
-
我认为是stackoverflow.com/questions/259026 的副本。
-
如果您的帖子没有因为重复而关闭,您可以更改继承来实现吗?烦死我了……
-
@MichaelStum 这不是其中任何一个的副本。这些是关于静态方法实现由这些方法所属的类实现的接口指定的方法。这个问题是关于实现接口的静态类。
-
我为链接的副本写了一个答案,但由于它实际上是这个问题的答案,所以对那个问题没有意义,我不能在这里发布它,因为它被错误地关闭了.我宁愿不必打开一个实际的副本。
标签: c# .net interface static-classes