【问题标题】:Interface knows its implementers接口知道它的实现者
【发布时间】:2011-02-14 09:20:19
【问题描述】:

我可以在接口中以某种方式指定它的所有实现都将继承自某个抽象类吗?

【问题讨论】:

  • 为什么他们必须实现你的接口和抽象类?
  • 听起来你应该将接口方法添加到抽象类并删除接口。
  • 让抽象类实现接口,我看不到这个的用途,但我认为这是最符合你要求的。
  • @Vladimir - 如果您这样做是为了在不破坏现有客户端的情况下适应未来的变化,只需使用抽象基类(没有接口
  • @Vladimir - 我假设SomethingBase 实现了ISomething。所以看起来抽象类和接口是没有关系的。在这种情况下,恐怕您将不得不通过代码来处理这个问题 - 进行运行时类型检查并相应地处理它。但是,在我这样做之前,我会仔细检查我的设计以确认没有替代方案。

标签: c# oop interface abstract-class


【解决方案1】:

您可以通过注释/文档使其为人所知,但您不能通过编译时检查/语法强制执行此操作。

如果您为所有实现定义了一个基类,并且它确实减少了实现者的工作量,那么他们没有理由不这样做。例如.Net框架中的ICollection和CollectionBase

【讨论】:

    【解决方案2】:

    如果您不想公开接口,请在您的抽象类中将接口方法定义为抽象方法并取消接口,或者将接口设为内部而不将其公开给您的用户。

    【讨论】:

    • 我无法更改抽象类。
    【解决方案3】:

    直接“NO”
    除非你找到一些我强烈怀疑的技巧/解决方法!

    【讨论】:

      【解决方案4】:

      将接口放在抽象类上并从它派生。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多