Re: dynamic
От: Jack128  
Дата: 20.04.11 07:19
Оценка: +1
Здравствуйте, Silver10, Вы писали:

S>При выполнении следующего кода возникает ошибка: An expression tree may not contain a dynamic operation


S>то все работает. Почему?


та все ж написано в сообщении об ошибке. ExpressionTree (то есть тип Expression<...>) способно закодировать только ограниченный набор выражений. Причем компилятор си-шарпа неявно может преобразовать ещё меньший набор выражений (например в принципе циклы можно закодировать в exression-tree , но такой код Exression<Action<int []>> extp = arr => for(var = 0; i<arr.length; i++) {} — компилер не пропустит, нужно формировать дерево руками, вызывая методы класса Expression)

Операции с dynamic — в набор допустимых выражений не входят, отсюда и ошибка. Правда не в курсе, это ограничение деревьев или же компилера.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.