Use implementações de interface explícitas com um objeto dinâmico

Estou experimentando implentações explícitas de interfaces. Isso é para desmembrar o intellisense com métodos que não são válidos no contexto atual. Usar/ prático-aplicações-do-padrão de interface adaptativa-o-contexto-construtor-fluente / como referência. Para provar que eles não seriam chamados, achei que poderia usar a palavra-chave dinâmica, porque pelo menos meu código seria compilado. Ele compila, mas não funciona como esperado. A variável dinâmica tem acesso aos métodos de classe, mas não aos métodos de interface que são implementados explicitamente.

public interface IAmInterface
{
    void Explicit();
    void Implicit();
}

public class Implementation : IAmInterface
{
    void IAmInterface.Explicit()
    {
    }

    public void Implicit()
    {
    }
    public static Implementation BeginBuild()
    {
        return new Implementation();
    }
}

E aqui estão os 3 testes para provar meu ponto

[Test]
public void TestWorksAsExpected() //Pass
{
    var o = Implementation.BeginBuild();
    o.Implicit();
}

[Test]
public void TestDoesNotWorkWithExplicitImplementation() //Fails
{
    dynamic o = Implementation.BeginBuild();
    o.Explicit();
}

[Test]
public void ButWorksForImplicitImplementation() //Pass
{
    dynamic o = Implementation.BeginBuild();
    o.Implicit();
}

Alguém seria gentil o suficiente para explicar a razão disso? Um exemplo em que eu queria essa funcionalidade era provar que não poderia adicionar mais de dois jogadores em um TennisGame.

dynamic o = TennisGame.BeginBuild().With("Player A").Versus("Player B");
o.Versus("Player C"); //Should fail. It does, but for another reason

questionAnswers(1)

yourAnswerToTheQuestion