我有一种情况,两个类(一个从另一个派生)都显式地实现了相同的接口:
interface I
{
int M();
}
class A : I
{
int I.M() { return 1; }
}
class B : A, I
{
int I.M() { return 2; }
}
从派生类的实现中I.M()
,我想调用基类的实现,但我不知道该怎么做。到目前为止,我尝试的是这个(在 B 类中):
int I.M() { return (base as I).M() + 2; }
// this gives a compile-time error
//error CS0175: Use of keyword 'base' is not valid in this context
int I.M() { return ((this as A) as I).M() + 2; }
// this results in an endless loop, since it calls B's implementation
有没有办法做到这一点,而不必实现另一个(非接口显式)辅助方法?
更新:
我知道可以使用派生类调用的“帮助器”方法,例如:
class A : I
{
int I.M() { return M2(); }
protected int M2 { return 1; }
}
我还可以更改它以非显式地实现接口。但我只是想知道如果没有任何这些解决方法是否有可能。