예제 #1
0
        public override Expression Visit(Expression node)
        {
            if (node == null)
            {
                return(null);
            }
            if (!_candidates.Contains(node))
            {
                return(base.Visit(node));
            }

            var evaluated = EvaluateSubtree(node);

            if (evaluated != node)
            {
                return(PartialEvaluator.Evaluate(evaluated));
            }

            return(evaluated);
        }
예제 #2
0
 public static Expression Evaluate(Expression node)
 {
     var candidates = Nominator.Nominate(node);
     var evaluator = new PartialEvaluator(candidates);
     return evaluator.Visit(node);
 }