예제 #1
0
        protected sealed override CamlExpression VisitBindedExpression(CamlBindedExpression expression)
        {
            CamlBindedExpression result = (CamlBindedExpression)base.VisitBindedExpression(expression);

            if (result.Expression == Caml.False)
            {
                return(Caml.False);
            }
            return(result);
        }
예제 #2
0
        /// <summary>
        /// Called when visiting a CAML expression with binded values.
        /// </summary>
        /// <param name="expression">An instance of the <see cref="CamlBindedExpression"/> class representing the value-binded expression.</param>
        /// <returns>When overriden, returns an expression to replace the expression given in arguments.</returns>
        protected virtual CamlExpression VisitBindedExpression(CamlBindedExpression expression)
        {
            Hashtable previous = this.Bindings;

            try {
                this.Bindings = expression.Bindings;
                CamlExpression result = Visit(expression.Expression);
                if (result != expression.Expression)
                {
                    return(new CamlBindedExpression(result, this.Bindings));
                }
                return(expression);
            } finally {
                this.Bindings = previous;
            }
        }