Ответ 1
dynamic
код не будет компилироваться, если вы настроите таргетинг на среду .NET 3.5.
Чтобы быть более понятным, компилятор позволит вам определить и назначить переменную dynamic
, например:
dynamic x = 3;
Эта строка кода будет скомпилирована, поскольку dynamic
просто компилируется до object
в отношении типов. Но если вы затем попытаетесь сделать что-либо с этой переменной, как в:
Console.WriteLine(x);
... тогда компилятор должен был бы генерировать код для обнаружения/принуждения реального типа, чего он не может сделать; вы получите следующие ошибки компиляции:
- Предопределенный тип "Microsoft.CSharp.RuntimeBinder.Binder" не определен или не импортирован
- Невозможно найти один или несколько типов, необходимых для компиляции динамического выражения. Вам не хватает ссылки на файлы Microsoft.CSharp.dll и System.Core.dll?
Компилятор С# 4 опирается на DLR и, в частности, на сборку Microsoft.CSharp для всего, что связано с dynamic
. Они недоступны в .NET 3.5. Таким образом, ответ отрицательный, вы не можете использовать dynamic
при таргетинге Framework версии 3.5.