Ответ 1
Это просто не поддерживается текущим компилятором С#, и я не слышал о каких-либо изменениях в vNext. Конечно, строго говоря, для С# 3/4 это не определено - существует только "определено где-то еще" (на самом деле, AFAIK: спецификация для обработки дерева выражений еще формально не документирована, это может быть положительной вещью, так как трудно утверждать, что для этого потребуются изменения спецификации; p).
Самое смешное: начиная с .NET 4.0, дерево выражений API поддерживает мутировать (в этом случае см. Expression.Increment
и Expression.PostIncrementAssign
)), чтобы вы могли создать дерево выражений во время выполнения с помощью кода Expression.*
, но, откровенно говоря, это боль и трудность в управлении. Таким образом, для этого можно использовать потенциал, но не слишком надейтесь.
Также имейте в виду - анализ дерева выражений, чтобы вытащить его обратно, далек от тривиального. Разумный; легко: нет.