Operador de propagação nula e variável dinâmica

Eu estive olhando o operador de propagação nula em C # 6 e tentei fazê-lo funcionar com as variáveis dedynamic tipo, mas sem sucesso. Considere o código abaixo, ele compila, mas o CLR lançaAccessViolationException em tempo de execução quando a propagação nula é aplicada ao objeto dinâmico.

class SomeType
{
    public object SomeProperty { get; set; }

    static void Main()
    {
        var obj = new SomeType() { SomeProperty = "ABCD" };

        var p1 = ((dynamic)obj).SomeProperty;   //OK, p1 is set to "ABCD"
        var p2 = ((dynamic)obj)?.SomeProperty;  //AccessViolationException

        Console.ReadLine();
    }
}

No começo, pensei que isso poderia ser um bug, mas depois pensei emstructs. Normalmente você não pode se inscrever?. operador para uma variável de tipo de valor (porque não pode ser nulo). Mas você pode enviá-lo paradynamic e depois aplique o operador. Então eu mudeiSomeType ser estarstruct e tem a mesma exceção.

A questão é: é por design que a propagação nula para variáveis dinâmicas sempre gera exceção, porque o objeto subjacente pode ser um tipo de valor?

oAccessViolationException é muito feio de qualquer maneira, você consegue o mesmo quando executa o código?

questionAnswers(1)

yourAnswerToTheQuestion