I have a situation, where two classes (one deriving from the other) both implement the same interface explicitly:
interface I
{
int M();
}
class A : I
{
int I.M() { return 1; }
}
class B : A, I
{
int I.M() { return 2; }
}
From the derived class' implementation of I.M()
, I'd like to call the implementation of the base class, but I don't see how to do it. What I tried so far is this (in class 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
Is there a way to do this, without having to implement another (non interface-explicit) helper method?
Update:
I know it's possible with a "helper" method which can be called by the derived class, e.g:
class A : I
{
int I.M() { return M2(); }
protected int M2 { return 1; }
}
I can also change it to implement the interface non-explicitly. But I was just wondering if it's possible without any of these workarounds.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…