Пример #1
0
        public override Expression Visit(Expression node)
        {
            var visited = base.Visit(node);

            if (visited == null)
            {
                return(visited);
            }

            var transformers = __registry.GetTransformers(node.NodeType);

            foreach (var transformer in transformers)
            {
                var transformed = transformer(visited);
                if (transformed != visited)
                {
                    // we'll start over and apply the transformations to
                    // the new node
                    return(Visit(transformed));
                }
            }

            return(visited);
        }