Zetbox.API.ExpressionTreeVisitor.Visit C# (CSharp) Method

Visit() public method

Visits the Expression Tree
public Visit ( Expression e ) : void
e System.Linq.Expressions.Expression Linq Expression
return void
        public virtual void Visit(Expression e)
        {
            if (e == null) return;

            switch (e.NodeType)
            {
                case ExpressionType.Negate:
                case ExpressionType.NegateChecked:
                case ExpressionType.Not:
                case ExpressionType.Convert:
                case ExpressionType.ConvertChecked:
                case ExpressionType.Decrement:
                case ExpressionType.Increment:
                case ExpressionType.OnesComplement:
                case ExpressionType.ArrayLength:
                case ExpressionType.Quote:
                case ExpressionType.TypeAs:
                case ExpressionType.UnaryPlus:
                case ExpressionType.Unbox:
                    {
                        VisitUnary((UnaryExpression)e);
                        break;
                    }
                case ExpressionType.Add:
                case ExpressionType.AddChecked:
                case ExpressionType.Subtract:
                case ExpressionType.SubtractChecked:
                case ExpressionType.Multiply:
                case ExpressionType.MultiplyChecked:
                case ExpressionType.Divide:
                case ExpressionType.Modulo:
                case ExpressionType.And:
                case ExpressionType.AndAlso:
                case ExpressionType.Or:
                case ExpressionType.OrElse:
                case ExpressionType.LessThan:
                case ExpressionType.LessThanOrEqual:
                case ExpressionType.GreaterThan:
                case ExpressionType.GreaterThanOrEqual:
                case ExpressionType.Equal:
                case ExpressionType.NotEqual:
                case ExpressionType.Coalesce:
                case ExpressionType.ArrayIndex:
                case ExpressionType.RightShift:
                case ExpressionType.LeftShift:
                case ExpressionType.ExclusiveOr:
                    {
                        VisitBinary((BinaryExpression)e);
                        break;
                    }
                case ExpressionType.TypeIs:
                    {
                        VisitTypeIs((TypeBinaryExpression)e);
                        break;
                    }
                case ExpressionType.Conditional:
                    {
                        VisitConditional((ConditionalExpression)e);
                        break;
                    }
                case ExpressionType.Constant:
                    {
                        VisitConstant((ConstantExpression)e);
                        break;
                    }
                case ExpressionType.Parameter:
                    {
                        VisitParameter((ParameterExpression)e);
                        break;
                    }
                case ExpressionType.MemberAccess:
                    {
                        VisitMemberAccess((MemberExpression)e);
                        break;
                    }
                case ExpressionType.Call:
                    {
                        VisitMethodCall((MethodCallExpression)e);
                        break;
                    }
                case ExpressionType.Lambda:
                    {
                        VisitLambda((LambdaExpression)e);
                        break;
                    }
                case ExpressionType.New:
                    {
                        VisitNew((NewExpression)e);
                        break;
                    }
                case ExpressionType.NewArrayInit:
                case ExpressionType.NewArrayBounds:
                    {
                        VisitNewArray((NewArrayExpression)e);
                        break;
                    }
                case ExpressionType.Invoke:
                    {
                        VisitInvocation((InvocationExpression)e);
                        break;
                    }
                case ExpressionType.MemberInit:
                    {
                        VisitMemberInit((MemberInitExpression)e);
                        break;
                    }
                case ExpressionType.ListInit:
                    {
                        VisitListInit((ListInitExpression)e);
                        break;
                    }
                default:
                    {
                        throw new NotSupportedException(string.Format("Unknown expression type: '{0}'", e.NodeType));
                    }
            }
        }