C#:基类中的静态成员

3

我有一些共同的数据在不同的派生类实例间共享。 为了共享这些公共数据属性,我将它们设置为基类中的静态属性。 但是静态的公共属性不能在接口中声明。 如果我们尝试这样做,就会出现以下错误:

"无法实现接口成员,因为它是静态的。"

是否有任何已知的设计模式或最佳实践适用于这种需求?


你应该使用抽象类。 - looper
2个回答

9
最好使用抽象基类代替。

2
接口(Interface)只定义了接口。一旦你有了任何“实际”的东西,无论是方法实现还是共享数据,你都需要一个类,在这种情况下是抽象类。
另一种选择是保留接口,但添加单例以保存实现接口的类相关的数据。如果你需要使用接口,那么我认为这是正确的方式。只需命名单例,使其明显地与接口逻辑相关,并记录实现接口应使用它。
在你的情况下,具有数据的静态类可能已经足够了,而不是完整的单例实现,但我不会在这里深入讨论整个“静态类 vs 单例”这个有争议的主题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接