Являются ли деревья выражений LINQ правильными деревьями, как и в, графиками (направленными или нет, википедия, похоже, не согласна) без циклов? Каков корень дерева выражений из следующего выражения С#?
(string s) => s.Length
Дерево выражений выглядит так: "- > ", обозначающее имя свойства node, доступно через
->Parameters[0]
Lambda---------Parameter(string s)
\ /
\->Body /->Expression
\ /
Member(Length)
При использовании ExpressionVisitor для посещения LambdaExpression, ParameterExpression посещается дважды. Есть ли способ использовать ExpressionVisitor для посещения LambdaExpression, чтобы все узлы посещались ровно один раз и в определенном, хорошо известном порядке (предварительный заказ, порядок, пост-порядок и т.д.)?