Base
is explicitly implementing ITest.Test()
. It's an implementation, but it's a "private" implementation, only accessible through the ITest
interface.
On top of that, Impl
is re-implementing ITest.Test()
, so when you try your itest2.Test()
you are going to point to this later re-implementation.
The 2 key points here are:
- There is no public
Base.Test()
.
- You killed all your possibilities of accessing the
ITest.Test()
implementation on Base
by re-implementing it on Impl
.
Re-implementation, re-implementation, re-implementation.
May I suggest renaming the question slightly: How to call the base interface explicit implementation when derived classes explicit re-implement the interface? Because that's what you are asking...