or que o compilador c # não verifica a "estática" do método nos sites de chamada com um argumento dinâmic

Por que o compilador C # não me diz que esse pedaço de código é inválid

class Program
{
    static void Main(string[] args)
    {
        dynamic d = 1;
        MyMethod(d);
    }

    public void MyMethod(int i) 
    {
        Console.WriteLine("int");
    }
}

A chamada paraMyMethod falha no tempo de execução porque estou tentando chamar um método não estático de um método estático. Isso é muito razoável, mas por que o compilador não considera isso um erro no momento da compilação?

O seguinte não será compilado

class Program
{
    static void Main(string[] args)
    {
        dynamic d = 1;
        MyMethod(d);
    }
}

, apesar do envio dinâmico, o compilador verifica seMyMethod existe. Por que não verifica a "estática"?

questionAnswers(2)

yourAnswerToTheQuestion