实现子类接口的多级

  • 本文关键字:多级 接口 子类 实现 c#
  • 更新时间 :
  • 英文 :


在SocialAuth.Netlib(和其他一些库)中,我看到一个类正在实现一个接口,而另一个类继承了该类,并再次实现了该接口,如:

class Provider: IProvider

还有

class LinkedInWrapper : Provider, IProvider

我检查了LinkedInWrapper不必实现任何IProvider类,因为它已经在Provider类中实现了。

我的问题是为什么LinkedInWrapper再次实现接口?

在这种情况下,它只是一个标记,因此您可以在不查找Provider类的情况下查看LinkedInWrapper上的接口。

这是一种反模式,但并不罕见。我认为这是一种反模式,因为如果基类稍后实现一个额外的接口会发生什么?

现在,您必须遍历从基类继承的所有类,并更新它们的签名,然后为所有级别执行此操作,或者在模式中存在不一致。如果该类在库中,则使用该库的其他人将保证最初存在不一致,因为您无法更改他们的代码,即使他们希望遵循该模式。

但是,在其他情况下,您可能需要重新实现接口。埃里克·利珀特为此写了一篇文章。

最新更新