Skip to content

Instantly share code, notes, and snippets.

@takeshik
Created August 27, 2012 13:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takeshik/3488328 to your computer and use it in GitHub Desktop.
Save takeshik/3488328 to your computer and use it in GitHub Desktop.
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