【问题标题】:C# : Static Members in Base ClassC#:基类中的静态成员
【发布时间】:2012-11-22 19:59:54
【问题描述】:

我有跨派生类的不同实例的公共数据。 因此,为了共享公共数据属性,我在基类中将它们设为静态。 但是静态公共属性不能在接口中声明。 如果我们尝试,我们会得到错误:

“不能实现接口成员,因为它是静态的。”

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

【问题讨论】:

  • 你应该改用抽象类。

标签: c# design-patterns


【解决方案1】:

你最好改用抽象基类。

【讨论】:

    【解决方案2】:

    Interface 仅定义了一个接口。只要你有任何“真实”的东西,无论是方法实现还是共享数据,你都需要一个类,在这种情况下是一个抽象类。

    替代方案是保留接口,但添加单例来保存与实现接口的类相关的数据。如果您需要使用接口,那么我认为这就是要走的路。只需将单例命名为,很明显它在逻辑上链接到接口和文档,接口的实现应该使用它。

    在您的情况下,带有数据的静态类可能就足够了,而不是完整的单例实现,但我不会在这里讨论,整个“静态类与单例”有点争议。

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多