/// <summary> /// Creates an expression representing a unary assignment operation. /// </summary> /// <param name="unaryType">The type of assignment represented.</param> /// <param name="operand">The operand of the assignment operation, i.e. the assignment target.</param> /// <param name="method">The method implementing the assignment operation.</param> /// <returns>A new <see cref="AssignUnaryCSharpExpression"/> instance representing the unary assignment.</returns> public static AssignUnaryCSharpExpression MakeUnaryAssign(CSharpExpressionType unaryType, Expression operand, MethodInfo method) { switch (unaryType) { case CSharpExpressionType.PreIncrementAssign: return(PreIncrementAssign(operand, method)); case CSharpExpressionType.PreIncrementAssignChecked: return(PreIncrementAssignChecked(operand, method)); case CSharpExpressionType.PreDecrementAssign: return(PreDecrementAssign(operand, method)); case CSharpExpressionType.PreDecrementAssignChecked: return(PreDecrementAssignChecked(operand, method)); case CSharpExpressionType.PostIncrementAssign: return(PostIncrementAssign(operand, method)); case CSharpExpressionType.PostIncrementAssignChecked: return(PostIncrementAssignChecked(operand, method)); case CSharpExpressionType.PostDecrementAssign: return(PostDecrementAssign(operand, method)); case CSharpExpressionType.PostDecrementAssignChecked: return(PostDecrementAssignChecked(operand, method)); } throw LinqError.UnhandledUnary(unaryType); }
//CONFORMING public static UnaryExpression MakeUnary(ExpressionType unaryType, Expression operand, Type type, MethodInfo method) { switch (unaryType) { case ExpressionType.Negate: return(Negate(operand, method)); case ExpressionType.NegateChecked: return(NegateChecked(operand, method)); case ExpressionType.Not: return(Not(operand, method)); case ExpressionType.ArrayLength: return(ArrayLength(operand)); case ExpressionType.Convert: return(Convert(operand, type, method)); case ExpressionType.ConvertChecked: return(ConvertChecked(operand, type, method)); case ExpressionType.Throw: return(Throw(operand, type)); case ExpressionType.TypeAs: return(TypeAs(operand, type)); case ExpressionType.Quote: return(Quote(operand)); case ExpressionType.UnaryPlus: return(UnaryPlus(operand, method)); case ExpressionType.Unbox: return(Unbox(operand, type)); case ExpressionType.Increment: return(Increment(operand, method)); case ExpressionType.Decrement: return(Decrement(operand, method)); case ExpressionType.PreIncrementAssign: return(PreIncrementAssign(operand, method)); case ExpressionType.PostIncrementAssign: return(PostIncrementAssign(operand, method)); case ExpressionType.PreDecrementAssign: return(PreDecrementAssign(operand, method)); case ExpressionType.PostDecrementAssign: return(PostDecrementAssign(operand, method)); default: throw Error.UnhandledUnary(unaryType); } }
private static UnaryExpression FunctionalOp(CSharpExpressionType unaryType, Expression operand, MethodInfo method) { switch (unaryType) { case CSharpExpressionType.PreDecrementAssign: case CSharpExpressionType.PreDecrementAssignChecked: return(Expression.PreDecrementAssign(operand, method)); case CSharpExpressionType.PreIncrementAssign: case CSharpExpressionType.PreIncrementAssignChecked: return(Expression.PreIncrementAssign(operand, method)); case CSharpExpressionType.PostDecrementAssign: case CSharpExpressionType.PostDecrementAssignChecked: return(Expression.PostDecrementAssign(operand, method)); case CSharpExpressionType.PostIncrementAssign: case CSharpExpressionType.PostIncrementAssignChecked: return(Expression.PostIncrementAssign(operand, method)); } throw LinqError.UnhandledUnary(unaryType); }