Olá Fabio
Entendo sua dúvida em relação ao uso do tipo dynamic em C#. De fato, a resposta que você mencionou pode parecer contraditória, mas vou tentar explicar de uma maneira mais clara.
O tipo dynamic em C# permite que você escreva código que não é verificado em tempo de compilação, mas sim em tempo de execução. Isso significa que o compilador não verifica se os métodos e propriedades chamados em um objeto dynamic existem ou são válidos. No entanto, se houver algum erro, ele será capturado em tempo de execução.
Em outras palavras, o compilador não verifica a existência de métodos e propriedades em tempo de compilação, mas isso não significa que ele não pega erros em design-time. Erros de sintaxe e outros erros que podem ser detectados em tempo de compilação ainda serão capturados.
Por exemplo, considere o seguinte código:
dynamic obj = "Olá";
Console.WriteLine(obj.Length);
Nesse caso, o compilador não verifica se a propriedade Length existe na string "Olá". No entanto, quando o código é executado, um erro será lançado, pois a propriedade Length não existe em uma string.
Espero que isso tenha esclarecido sua dúvida. Se ainda tiver alguma pergunta, fique à vontade para perguntar.
Espero ter ajudado e bons estudos!