Example #1
0
        /// <summary>
        /// The visit member.
        /// </summary>
        /// <param name="node">
        /// The node.
        /// </param>
        /// <returns>
        /// The <see cref="Expression"/>.
        /// </returns>
        protected override Expression VisitMember(MemberExpression node)
        {
            var result = base.VisitMember(node);

            node = result as MemberExpression;

            return(node != null && (node.Expression == null || node.Expression is ConstantExpression) ? Simplifier.Evaluate(node) : result);
        }
Example #2
0
        /// <summary>
        /// The visit conditional.
        /// </summary>
        /// <param name="node">
        /// The node.
        /// </param>
        /// <returns>
        /// The <see cref="Expression"/>.
        /// </returns>
        protected override Expression VisitConditional(ConditionalExpression node)
        {
            var result = base.VisitConditional(node);

            node = result as ConditionalExpression;

            return(node?.Test is ConstantExpression && node.IfTrue is ConstantExpression && node.IfFalse is ConstantExpression?Simplifier.Evaluate(node) : result);
        }
Example #3
0
        /// <summary>
        /// The visit index.
        /// </summary>
        /// <param name="node">
        /// The node.
        /// </param>
        /// <returns>
        /// The <see cref="Expression"/>.
        /// </returns>
        protected override Expression VisitIndex(IndexExpression node)
        {
            var result = base.VisitIndex(node);

            node = result as IndexExpression;

            return(node != null && (node.Object == null || node.Object is ConstantExpression) && node.Arguments.All(arg => arg is ConstantExpression) ? Simplifier.Evaluate(node) : result);
        }