Created
August 27, 2012 13:13
-
-
Save takeshik/3488328 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
internal static Node Serialize(Expression expression) | |
{ | |
switch (expression.NodeType) | |
{ | |
case ExpressionType.Add: | |
return Add((BinaryExpression) expression); | |
case ExpressionType.AddChecked: | |
return AddChecked((BinaryExpression) expression); | |
case ExpressionType.And: | |
return And((BinaryExpression) expression); | |
case ExpressionType.AndAlso: | |
return AndAlso((BinaryExpression) expression); | |
case ExpressionType.ArrayLength: | |
return ArrayLength((UnaryExpression) expression); | |
case ExpressionType.ArrayIndex: | |
return ArrayIndex(expression); | |
case ExpressionType.Call: | |
break; | |
case ExpressionType.Coalesce: | |
return Coalesce((BinaryExpression) expression); | |
case ExpressionType.Conditional: | |
return Condition((ConditionalExpression) expression); | |
case ExpressionType.Constant: | |
return Constant((ConstantExpression) expression); | |
case ExpressionType.Convert: | |
return Convert((UnaryExpression) expression); | |
case ExpressionType.ConvertChecked: | |
return ConvertChecked((UnaryExpression) expression); | |
case ExpressionType.Divide: | |
return Divide((BinaryExpression) expression); | |
case ExpressionType.Equal: | |
return Equal((BinaryExpression) expression); | |
case ExpressionType.ExclusiveOr: | |
return ExclusiveOr((BinaryExpression) expression); | |
case ExpressionType.GreaterThan: | |
return GreaterThan((BinaryExpression) expression); | |
case ExpressionType.GreaterThanOrEqual: | |
return GreaterThanOrEqual((BinaryExpression) expression); | |
case ExpressionType.Invoke: | |
break; | |
case ExpressionType.Lambda: | |
return Lambda((LambdaExpression) expression); | |
case ExpressionType.LeftShift: | |
return LeftShift((BinaryExpression) expression); | |
case ExpressionType.LessThan: | |
return LessThan((BinaryExpression) expression); | |
case ExpressionType.LessThanOrEqual: | |
return LessThanOrEqual((BinaryExpression) expression); | |
case ExpressionType.ListInit: | |
break; | |
case ExpressionType.MemberAccess: | |
break; | |
case ExpressionType.MemberInit: | |
break; | |
case ExpressionType.Modulo: | |
return Modulo((BinaryExpression) expression); | |
case ExpressionType.Multiply: | |
return Multiply((BinaryExpression) expression); | |
case ExpressionType.MultiplyChecked: | |
return MultiplyChecked((BinaryExpression) expression); | |
case ExpressionType.Negate: | |
return Negate((UnaryExpression) expression); | |
case ExpressionType.UnaryPlus: | |
return UnaryPlus((UnaryExpression) expression); | |
case ExpressionType.NegateChecked: | |
return NegateChecked((UnaryExpression) expression); | |
case ExpressionType.New: | |
break; | |
case ExpressionType.NewArrayInit: | |
break; | |
case ExpressionType.NewArrayBounds: | |
break; | |
case ExpressionType.Not: | |
return Not((UnaryExpression) expression); | |
case ExpressionType.NotEqual: | |
return NotEqual((BinaryExpression) expression); | |
case ExpressionType.Or: | |
return Or((BinaryExpression) expression); | |
case ExpressionType.OrElse: | |
return OrElse((BinaryExpression) expression); | |
case ExpressionType.Parameter: | |
return Parameter((ParameterExpression) expression); | |
case ExpressionType.Power: | |
return Power((BinaryExpression) expression); | |
case ExpressionType.Quote: | |
return Quote((UnaryExpression) expression); | |
case ExpressionType.RightShift: | |
return RightShift((BinaryExpression) expression); | |
case ExpressionType.Subtract: | |
return Subtract((BinaryExpression) expression); | |
case ExpressionType.SubtractChecked: | |
return SubtractChecked((BinaryExpression) expression); | |
case ExpressionType.TypeAs: | |
return TypeAs((UnaryExpression) expression); | |
case ExpressionType.TypeIs: | |
break; | |
case ExpressionType.Assign: | |
return Assign((BinaryExpression) expression); | |
case ExpressionType.Block: | |
return Block((BlockExpression) expression); | |
case ExpressionType.DebugInfo: | |
break; | |
case ExpressionType.Decrement: | |
return Decrement((UnaryExpression) expression); | |
case ExpressionType.Dynamic: | |
break; | |
case ExpressionType.Default: | |
return Default((DefaultExpression) expression); | |
case ExpressionType.Extension: | |
break; | |
case ExpressionType.Goto: | |
return Goto((GotoExpression) expression); | |
case ExpressionType.Increment: | |
return Increment((UnaryExpression) expression); | |
case ExpressionType.Index: | |
break; | |
case ExpressionType.Label: | |
break; | |
case ExpressionType.RuntimeVariables: | |
break; | |
case ExpressionType.Loop: | |
break; | |
case ExpressionType.Switch: | |
break; | |
case ExpressionType.Throw: | |
return Throw((UnaryExpression) expression); | |
case ExpressionType.Try: | |
break; | |
case ExpressionType.Unbox: | |
return Unbox((UnaryExpression) expression); | |
case ExpressionType.AddAssign: | |
return AddAssign((BinaryExpression) expression); | |
case ExpressionType.AndAssign: | |
return AndAssign((BinaryExpression) expression); | |
case ExpressionType.DivideAssign: | |
return DivideAssign((BinaryExpression) expression); | |
case ExpressionType.ExclusiveOrAssign: | |
return ExclusiveOrAssign((BinaryExpression) expression); | |
case ExpressionType.LeftShiftAssign: | |
return LeftShiftAssign((BinaryExpression) expression); | |
case ExpressionType.ModuloAssign: | |
return ModuloAssign((BinaryExpression) expression); | |
case ExpressionType.MultiplyAssign: | |
return MultiplyAssign((BinaryExpression) expression); | |
case ExpressionType.OrAssign: | |
return OrAssign((BinaryExpression) expression); | |
case ExpressionType.PowerAssign: | |
return PowerAssign((BinaryExpression) expression); | |
case ExpressionType.RightShiftAssign: | |
return RightShiftAssign((BinaryExpression) expression); | |
case ExpressionType.SubtractAssign: | |
return SubtractAssign((BinaryExpression) expression); | |
case ExpressionType.AddAssignChecked: | |
return AddAssignChecked((BinaryExpression) expression); | |
case ExpressionType.MultiplyAssignChecked: | |
return MultiplyAssignChecked((BinaryExpression) expression); | |
case ExpressionType.SubtractAssignChecked: | |
return SubtractAssignChecked((BinaryExpression) expression); | |
case ExpressionType.PreIncrementAssign: | |
return PreIncrementAssign((UnaryExpression) expression); | |
case ExpressionType.PreDecrementAssign: | |
return PreDecrementAssign((UnaryExpression) expression); | |
case ExpressionType.PostIncrementAssign: | |
return PostIncrementAssign((UnaryExpression) expression); | |
case ExpressionType.PostDecrementAssign: | |
return PostDecrementAssign((UnaryExpression) expression); | |
case ExpressionType.TypeEqual: | |
break; | |
case ExpressionType.OnesComplement: | |
return OnesComplement((UnaryExpression) expression); | |
case ExpressionType.IsTrue: | |
return IsTrue((UnaryExpression) expression); | |
case ExpressionType.IsFalse: | |
return IsFalse((UnaryExpression) expression); | |
default: | |
throw new ArgumentOutOfRangeException("expression.NodeType"); | |
} | |
throw new NotSupportedException(String.Format("Expression node type '{0}' is not supported.", expression.NodeType)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment