c# – 子类是否可以实现与其父级相同的接口?

c# – 子类是否可以实现与其父级相同的接口?,第1张

概述我今天以前从未遇到过这个问题,并且想知道完成这种行为的惯例/最佳做法是什么. 基本设置是这样的: public interface IDispatch { void Dispatch();}public class Foo : IDispatch { void IDispatch.Dispatch() { DoSomething(); }}pub 我今天以前从未遇到过这个问题,并且想知道完成这种行为的惯例/最佳做法是什么.

基本设置是这样的:

public interface Idispatch {    voID dispatch();}public class Foo : Idispatch {    voID Idispatch.dispatch() {        DoSomething();    }}public class bar : Foo {     ...}

bar需要对Foo进行子类化,因为它与bar plus共享所有相同的属性,并引入了我需要遇到的2个新的属性.我的问题是,Foo还需要一个稍微不同的dispatch()实现.通常它会被覆盖,但是这对接口方法是无效的,所以只要使用bar实现Idispatch就可以了,所以我的类定义如下所示:

public class bar : Foo,Idispatch { .... }

然后只是在bar中明确地实现该接口方法?我的编译器似乎没有抱怨,当我尝试这样做,但我不知道是否会导致任何运行时问题解决在路上使用哪个实现,或者如果有更好的方式来完成这样的事情.

还值得一提的是,在我的工作场所,我们使用UML模型中的代码生成,强制所有类的设计必须先从模型完成.代码生成工具是什么导致接口方法被明确地实现(不想辩论这个优点和缺点,它只是我现在被迫处理,所以有一个隐式的实现不是一个选择)

解决方法 您也可以通过以下两种方法之一进行 *** 作:

首先,不要明确实现接口:

public class Foo : Idispatch {    public virtual voID dispatch() {        whatever();    }}public class bar : Foo {    public overrIDe voID dispatch() {        whateverElse();    }}

其次,明确地实现它,但是添加一个子类可以覆盖的函数:

public class Foo : Idispatch {    voID Idispatch.dispatch() {        this.dispatch();    }    protected virtual voID dispatch() {        whatever();    }}public class bar : Foo {    protected overrIDe voID dispatch() {        whateverElse();    }}
总结

以上是内存溢出为你收集整理的c# – 子类是否可以实现与其父级相同的接口?全部内容,希望文章能够帮你解决c# – 子类是否可以实现与其父级相同的接口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1244134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存