我在今天之前从未遇到过这个问题,并且想知道完成这种行为的约定/最佳实践是什么。
基本设置是这样的:
public interface IDispatch {
void Dispatch();
}
public class Foo : IDispatch {
void IDispatch.Dispatch() {
DoSomething();
}
}
public class Bar : Foo {
...
}
Bar 需要继承 Foo 的子类,因为它与 Bar 共享所有相同的属性,并且引入了我需要遇到的 2 个新属性。我遇到的问题是 Foo 还需要稍微不同的 Dispatch() 实现。通常它会被覆盖,但这对于接口方法无效,所以让 Bar 实现 IDispatch 也可以,所以我的类定义如下所示:
public class Bar : Foo, IDispatch { .... }
然后在 Bar 中也对该接口方法进行显式实现?当我尝试这样做时,我的编译器似乎没有抱怨,但我不确定它是否会导致任何运行时问题解决在路上使用哪个实现,或者是否有更好的方法来完成这样的事情。
另外值得一提的是,在我的工作场所,我们使用 UML 模型生成代码,这强制所有类设计必须首先从模型完成。代码生成工具是导致显式实现接口方法的原因(不想争论这个的利弊,这正是我现在被迫处理的,所以不能选择隐式实现)