Más sobre Virtual / nuevo ... más interfaces!

Ayer publiqué una pregunta sobre las palabras clave nuevas / virtuales / de reemplazo, y aprendí mucho de sus respuestas. Pero aún sigo con algunas dudas.

Entre todas las "casillas", perdí contacto con lo que realmente está sucediendo con las tablas de métodos del tipo. Por ejemplo:

interface I1 { void Draw(); }
interface I2 { void Draw(); }

class A : I1, I2
{
    public void Minstance() { Console.WriteLine("A::MInstance"); }
    public virtual void Draw() { Console.WriteLine("A::Draw"); }
    void I2.Draw() { Console.WriteLine("A::I2.Draw"); }
}
class B : A, I1, I2
{
    public new virtual void Draw() { Console.WriteLine("B::Draw"); }
    void I1.Draw() { Console.WriteLine("B::I1.Draw"); }
}

class Test
{

    public static void Main()
    {
        A a = new B();
        a.Draw();
        I1 i1 = new A();
        i1.Draw();
        I2 i2 = new B();
        i2.Draw();
        B b = (B)a;
        b.Draw();
    }

}
}

La pregunta que se hace en este ejercicio es: rellene las tablas de métodos de los tipos de acuerdo con el código y explique la salida generada al ejecutar Main ().

Mi respuesta fue: En el tipo A tenemos 3 métodos: MInstance (), Draw () - la versión A :: Draw - y I2 :: Draw En el tipo B tenemos 4 métodos: MInstance de A, B :: Draw, I1 :: Dibujar y I2 :: Dibujar

No tengo mucha confianza en mi respuesta, y es por eso que publico esta pregunta. Cuando implementamos interfaces, ¿se crea una nueva ranura en la tabla de métodos para los métodos de dicha interfaz? ¿No deberíamos implementar I2 :: Draw también en la clase A?

Del mismo modo, cuando llamamos a un método que usa una variable de interfaz (como i1.Draw ()), entiendo que estamos en un despacho dinámico y, por lo tanto, deberíamos ver el tipo de objeto que tiene la variable (tipo A en ese caso ) y busque en la tabla de métodos de A un método llamado específicamente I1.Draw. Pero ¿y si no lo encontramos? ¿Cómo debo proceder en estos casos? ¿Hay alguna regla general que deba conocer para abordar con éxito estos problemas?

Lo siento por ser tan aburrido con esta pregunta, pero realmente necesito desatar este nudo en mi cabeza;)

¡Aclamaciones!

Respuestas a la pregunta(6)

Su respuesta a la pregunta