我有两个接口 A、B(位于不同的组件中)。两者都声明了一个具有相同签名 ( MyMethod
) 的方法。这两个接口由第三个接口 (C) 继承。
在前两个接口(A,B)中声明的方法旨在始终返回相同的值(对于 A 和 B),因此,我不想在从 C 派生时显式实现接口。
我实现了这一点在使用 new-keyword 时也在第三个接口中声明该方法。
public interface A {
MyType MyMethod();
}
public interface B {
MyType MyMethod();
}
public interface C : A,B{
new MyType MyMethod();
}
public class ImplementingClass : C{
public MyType MyMethod(){
// do somethin
// return something
}
}
有没有可以预料到的问题,或者这是一种糟糕的风格?
更新
对不起,我最初的问题没有显示完整的故事。当我尝试在 C 的接口引用上调用 MyMethod 时,就会出现问题。编译器不会编译它。
C aReferenceToC=new CImplementingClass();
aReferenceToC.MyMethod(); // <<< Here the compiler will throw an exception
完整示例
C myCImplementationAsAnInterfaceReference = new MyCImplementation();
myCImplementationAsAnInterfaceReference.MyMethod(); // This does not compile without declaring MyMethod in C with the new-Keyword
MyCImplementation myCImplementationReference= new MyCImplementation();
myCImplementationReference.MyMethod(); // This however will always compile and run
public interface A {
int MyMethod();
}
public interface B {
int MyMethod();
}
public interface C : A, B {
}
public class MyCImplementation : C {
public int MyMethod() {
return 1;
}
}