public static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression right, bool liftToNull, MethodInfo method, LambdaExpression conversion)
{
switch (binaryType)
{
case ExpressionType.Add:
return Add(left, right, method);
case ExpressionType.AddChecked:
return AddChecked(left, right, method);
case ExpressionType.Subtract:
return Subtract(left, right, method);
case ExpressionType.SubtractChecked:
return SubtractChecked(left, right, method);
case ExpressionType.Multiply:
return Multiply(left, right, method);
case ExpressionType.MultiplyChecked:
return MultiplyChecked(left, right, method);
case ExpressionType.Divide:
return Divide(left, right, method);
case ExpressionType.Modulo:
return Modulo(left, right, method);
case ExpressionType.Power:
return Power(left, right, method);
case ExpressionType.And:
return And(left, right, method);
case ExpressionType.AndAlso:
return AndAlso(left, right, method);
case ExpressionType.Or:
return Or(left, right, method);
case ExpressionType.OrElse:
return OrElse(left, right, method);
case ExpressionType.LessThan:
return LessThan(left, right, liftToNull, method);
case ExpressionType.LessThanOrEqual:
return LessThanOrEqual(left, right, liftToNull, method);
case ExpressionType.GreaterThan:
return GreaterThan(left, right, liftToNull, method);
case ExpressionType.GreaterThanOrEqual:
return GreaterThanOrEqual(left, right, liftToNull, method);
case ExpressionType.Equal:
return Equal(left, right, liftToNull, method);
case ExpressionType.NotEqual:
return NotEqual(left, right, liftToNull, method);
case ExpressionType.ExclusiveOr:
return ExclusiveOr(left, right, method);
case ExpressionType.Coalesce:
return Coalesce(left, right, conversion);
case ExpressionType.ArrayIndex:
return ArrayIndex(left, right);
case ExpressionType.RightShift:
return RightShift(left, right, method);
case ExpressionType.LeftShift:
return LeftShift(left, right, method);
case ExpressionType.Assign:
return Assign(left, right);
case ExpressionType.AddAssign:
return AddAssign(left, right, method, conversion);
case ExpressionType.AndAssign:
return AndAssign(left, right, method, conversion);
case ExpressionType.DivideAssign:
return DivideAssign(left, right, method, conversion);
case ExpressionType.ExclusiveOrAssign:
return ExclusiveOrAssign(left, right, method, conversion);
case ExpressionType.LeftShiftAssign:
return LeftShiftAssign(left, right, method, conversion);
case ExpressionType.ModuloAssign:
return ModuloAssign(left, right, method, conversion);
case ExpressionType.MultiplyAssign:
return MultiplyAssign(left, right, method, conversion);
case ExpressionType.OrAssign:
return OrAssign(left, right, method, conversion);
case ExpressionType.PowerAssign:
return PowerAssign(left, right, method, conversion);
case ExpressionType.RightShiftAssign:
return RightShiftAssign(left, right, method, conversion);
case ExpressionType.SubtractAssign:
return SubtractAssign(left, right, method, conversion);
case ExpressionType.AddAssignChecked:
return AddAssignChecked(left, right, method, conversion);
case ExpressionType.SubtractAssignChecked:
return SubtractAssignChecked(left, right, method, conversion);
case ExpressionType.MultiplyAssignChecked:
return MultiplyAssignChecked(left, right, method, conversion);
default:
throw Error.UnhandledBinary(binaryType, nameof(binaryType));
}
}