Нулевой оператор распространения и динамическая переменная

Я смотрел на оператор нулевого распространения в C # 6 и пытался заставить его работать с переменнымиdynamic типа но безуспешно. Рассмотрим код ниже, он компилируется, но выдает CLRAccessViolationException во время выполнения, когда нулевое распространение применяется к динамическому объекту.

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();
    }
}

Сначала я подумал, что это может быть ошибкой, но потом я подумал оstructs. Обычно вы не можете подать заявку?. оператор переменной типа значения (потому что она не может быть нулевой). Но вы можете бросить его наdynamic а затем применить оператор. Итак, я изменилсяSomeType бытьstruct и получил такое же исключение.

Вопрос в том, что по замыслу распространение нуль для динамических переменных всегда вызывает исключение, поскольку базовый объект может иметь тип значения?

AccessViolationException в любом случае довольно уродливо, вы получаете то же самое при запуске кода?

Ответы на вопрос(1)

Ваш ответ на вопрос