Your question has nothing specific to interfaces. Forget about interfaces for a minute and focus on just inheritance and run-time vs. compile-time types.
Consider this:
class Base { / *...* / }
class Derived {
internal DerivedSpecific() { / *...* / }
}
Base instance = new Derived();
instance.DerivedSpecific();
Now,
Base
could be a class or in interface, the nature of your bug is the same. You need to move the method to the base type, in your case, to the interface. The methods specific to the derived class should be called in this class or via its instance, not the instance of the interface (or base class) type. One more thing: you can down-case the instance and still call the method.
Don't even think about it — it would be possible but means a
bad design and
defeat of the purpose of inheritance and encapsulation. You code sample shows that you don't feel these purposes, just yet. You need to review your understanding of OOP from the very beginning, not just the interfaces.
—SA