internal virtual MemberBinding VisitBinding(MemberBinding binding) { switch (binding.BindingType) { case MemberBindingType.Assignment: return(this.VisitMemberAssignment((MemberAssignment)binding)); case MemberBindingType.MemberBinding: return(this.VisitMemberMemberBinding((MemberMemberBinding)binding)); case MemberBindingType.ListBinding: return(this.VisitMemberListBinding((MemberListBinding)binding)); default: throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(binding.BindingType.ToString())); } }
internal virtual Expression Visit(Expression exp) { if (exp == null) { return(exp); } switch (exp.NodeType) { case ExpressionType.UnaryPlus: case ExpressionType.Negate: case ExpressionType.NegateChecked: case ExpressionType.Not: case ExpressionType.Convert: case ExpressionType.ConvertChecked: case ExpressionType.ArrayLength: case ExpressionType.Quote: case ExpressionType.TypeAs: return(this.VisitUnary((UnaryExpression)exp)); 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: return(this.VisitBinary((BinaryExpression)exp)); case ExpressionType.TypeIs: return(this.VisitTypeIs((TypeBinaryExpression)exp)); case ExpressionType.Conditional: return(this.VisitConditional((ConditionalExpression)exp)); case ExpressionType.Constant: return(this.VisitConstant((ConstantExpression)exp)); case ExpressionType.Parameter: return(this.VisitParameter((ParameterExpression)exp)); case ExpressionType.MemberAccess: return(this.VisitMemberAccess((MemberExpression)exp)); case ExpressionType.Call: return(this.VisitMethodCall((MethodCallExpression)exp)); case ExpressionType.Lambda: return(this.VisitLambda((LambdaExpression)exp)); case ExpressionType.New: return(this.VisitNew((NewExpression)exp)); case ExpressionType.NewArrayInit: case ExpressionType.NewArrayBounds: return(this.VisitNewArray((NewArrayExpression)exp)); case ExpressionType.Invoke: return(this.VisitInvocation((InvocationExpression)exp)); case ExpressionType.MemberInit: return(this.VisitMemberInit((MemberInitExpression)exp)); case ExpressionType.ListInit: return(this.VisitListInit((ListInitExpression)exp)); default: throw new NotSupportedException(Strings.ALinq_UnsupportedExpression(exp.NodeType.ToString())); } }