using System; using System.Collections.ObjectModel; namespace System.Linq.Expressions { // Token: 0x02000020 RID: 32 internal abstract class ExpressionVisitor { // Token: 0x060001E6 RID: 486 RVA: 0x0000B0B0 File Offset: 0x000092B0 protected virtual void Visit(Expression expression) { if (expression == null) { return; } switch (expression.NodeType) { case ExpressionType.Add: case ExpressionType.AddChecked: case ExpressionType.And: case ExpressionType.AndAlso: case ExpressionType.ArrayIndex: case ExpressionType.Coalesce: case ExpressionType.Divide: case ExpressionType.Equal: case ExpressionType.ExclusiveOr: case ExpressionType.GreaterThan: case ExpressionType.GreaterThanOrEqual: case ExpressionType.LeftShift: case ExpressionType.LessThan: case ExpressionType.LessThanOrEqual: case ExpressionType.Modulo: case ExpressionType.Multiply: case ExpressionType.MultiplyChecked: case ExpressionType.NotEqual: case ExpressionType.Or: case ExpressionType.OrElse: case ExpressionType.Power: case ExpressionType.RightShift: case ExpressionType.Subtract: case ExpressionType.SubtractChecked: this.VisitBinary((BinaryExpression)expression); break; case ExpressionType.ArrayLength: case ExpressionType.Convert: case ExpressionType.ConvertChecked: case ExpressionType.Negate: case ExpressionType.UnaryPlus: case ExpressionType.NegateChecked: case ExpressionType.Not: case ExpressionType.Quote: case ExpressionType.TypeAs: this.VisitUnary((UnaryExpression)expression); break; case ExpressionType.Call: this.VisitMethodCall((MethodCallExpression)expression); break; case ExpressionType.Conditional: this.VisitConditional((ConditionalExpression)expression); break; case ExpressionType.Constant: this.VisitConstant((ConstantExpression)expression); break; case ExpressionType.Invoke: this.VisitInvocation((InvocationExpression)expression); break; case ExpressionType.Lambda: this.VisitLambda((LambdaExpression)expression); break; case ExpressionType.ListInit: this.VisitListInit((ListInitExpression)expression); break; case ExpressionType.MemberAccess: this.VisitMemberAccess((MemberExpression)expression); break; case ExpressionType.MemberInit: this.VisitMemberInit((MemberInitExpression)expression); break; case ExpressionType.New: this.VisitNew((NewExpression)expression); break; case ExpressionType.NewArrayInit: case ExpressionType.NewArrayBounds: this.VisitNewArray((NewArrayExpression)expression); break; case ExpressionType.Parameter: this.VisitParameter((ParameterExpression)expression); break; case ExpressionType.TypeIs: this.VisitTypeIs((TypeBinaryExpression)expression); break; default: throw new ArgumentException(string.Format("Unhandled expression type: '{0}'", expression.NodeType)); } } // Token: 0x060001E7 RID: 487 RVA: 0x0000B298 File Offset: 0x00009498 protected virtual void VisitBinding(MemberBinding binding) { switch (binding.BindingType) { case MemberBindingType.Assignment: this.VisitMemberAssignment((MemberAssignment)binding); break; case MemberBindingType.MemberBinding: this.VisitMemberMemberBinding((MemberMemberBinding)binding); break; case MemberBindingType.ListBinding: this.VisitMemberListBinding((MemberListBinding)binding); break; default: throw new ArgumentException(string.Format("Unhandled binding type '{0}'", binding.BindingType)); } } // Token: 0x060001E8 RID: 488 RVA: 0x0000B314 File Offset: 0x00009514 protected virtual void VisitElementInitializer(ElementInit initializer) { this.VisitExpressionList(initializer.Arguments); } // Token: 0x060001E9 RID: 489 RVA: 0x0000B324 File Offset: 0x00009524 protected virtual void VisitUnary(UnaryExpression unary) { this.Visit(unary.Operand); } // Token: 0x060001EA RID: 490 RVA: 0x0000B334 File Offset: 0x00009534 protected virtual void VisitBinary(BinaryExpression binary) { this.Visit(binary.Left); this.Visit(binary.Right); this.Visit(binary.Conversion); } // Token: 0x060001EB RID: 491 RVA: 0x0000B368 File Offset: 0x00009568 protected virtual void VisitTypeIs(TypeBinaryExpression type) { this.Visit(type.Expression); } // Token: 0x060001EC RID: 492 RVA: 0x0000B378 File Offset: 0x00009578 protected virtual void VisitConstant(ConstantExpression constant) { } // Token: 0x060001ED RID: 493 RVA: 0x0000B37C File Offset: 0x0000957C protected virtual void VisitConditional(ConditionalExpression conditional) { this.Visit(conditional.Test); this.Visit(conditional.IfTrue); this.Visit(conditional.IfFalse); } // Token: 0x060001EE RID: 494 RVA: 0x0000B3B0 File Offset: 0x000095B0 protected virtual void VisitParameter(ParameterExpression parameter) { } // Token: 0x060001EF RID: 495 RVA: 0x0000B3B4 File Offset: 0x000095B4 protected virtual void VisitMemberAccess(MemberExpression member) { this.Visit(member.Expression); } // Token: 0x060001F0 RID: 496 RVA: 0x0000B3C4 File Offset: 0x000095C4 protected virtual void VisitMethodCall(MethodCallExpression methodCall) { this.Visit(methodCall.Object); this.VisitExpressionList(methodCall.Arguments); } // Token: 0x060001F1 RID: 497 RVA: 0x0000B3EC File Offset: 0x000095EC protected virtual void VisitList(ReadOnlyCollection list, Action visitor) { foreach (T t in list) { visitor(t); } } // Token: 0x060001F2 RID: 498 RVA: 0x0000B44C File Offset: 0x0000964C protected virtual void VisitExpressionList(ReadOnlyCollection list) { this.VisitList(list, new Action(this.Visit)); } // Token: 0x060001F3 RID: 499 RVA: 0x0000B464 File Offset: 0x00009664 protected virtual void VisitMemberAssignment(MemberAssignment assignment) { this.Visit(assignment.Expression); } // Token: 0x060001F4 RID: 500 RVA: 0x0000B474 File Offset: 0x00009674 protected virtual void VisitMemberMemberBinding(MemberMemberBinding binding) { this.VisitBindingList(binding.Bindings); } // Token: 0x060001F5 RID: 501 RVA: 0x0000B484 File Offset: 0x00009684 protected virtual void VisitMemberListBinding(MemberListBinding binding) { this.VisitElementInitializerList(binding.Initializers); } // Token: 0x060001F6 RID: 502 RVA: 0x0000B494 File Offset: 0x00009694 protected virtual void VisitBindingList(ReadOnlyCollection list) { this.VisitList(list, new Action(this.VisitBinding)); } // Token: 0x060001F7 RID: 503 RVA: 0x0000B4AC File Offset: 0x000096AC protected virtual void VisitElementInitializerList(ReadOnlyCollection list) { this.VisitList(list, new Action(this.VisitElementInitializer)); } // Token: 0x060001F8 RID: 504 RVA: 0x0000B4C4 File Offset: 0x000096C4 protected virtual void VisitLambda(LambdaExpression lambda) { this.Visit(lambda.Body); } // Token: 0x060001F9 RID: 505 RVA: 0x0000B4D4 File Offset: 0x000096D4 protected virtual void VisitNew(NewExpression nex) { this.VisitExpressionList(nex.Arguments); } // Token: 0x060001FA RID: 506 RVA: 0x0000B4E4 File Offset: 0x000096E4 protected virtual void VisitMemberInit(MemberInitExpression init) { this.VisitNew(init.NewExpression); this.VisitBindingList(init.Bindings); } // Token: 0x060001FB RID: 507 RVA: 0x0000B50C File Offset: 0x0000970C protected virtual void VisitListInit(ListInitExpression init) { this.VisitNew(init.NewExpression); this.VisitElementInitializerList(init.Initializers); } // Token: 0x060001FC RID: 508 RVA: 0x0000B534 File Offset: 0x00009734 protected virtual void VisitNewArray(NewArrayExpression newArray) { this.VisitExpressionList(newArray.Expressions); } // Token: 0x060001FD RID: 509 RVA: 0x0000B544 File Offset: 0x00009744 protected virtual void VisitInvocation(InvocationExpression invocation) { this.VisitExpressionList(invocation.Arguments); this.Visit(invocation.Expression); } } }