Output:
B->Hello! from Explicit.  
Shouldn't it be:?
A->Hello! from Explicit.  
Why doesn't explicit cast (IHello)a call IHello.Hello() from class A?
interface IHello
{
    void Hello();
}
class A : IHello
{
    public virtual void Hello()
    {
        Console.WriteLine("A->Hello!");
    }
    void IHello.Hello()
    {
        Console.WriteLine("A->Hello! from Explicit.");
    }
}
class B : A, IHello
{
    public override void Hello()
    {
        Console.WriteLine("B->Hello!");
    }
    void IHello.Hello()
    {
        Console.WriteLine("B->Hello! from Explicit.");
    }
}
class Program
{
    static void Main(string[] args)
    {
        A a = new B();
        ((IHello)a).Hello();
    }
}
