System.Linq.Expressions.Expression.GetUserDefinedAssignOperatorOrThrow C# (CSharp) Method

GetUserDefinedAssignOperatorOrThrow() private static method

private static GetUserDefinedAssignOperatorOrThrow ( ExpressionType binaryType, string name, Expression left, Expression right, LambdaExpression conversion, bool liftToNull ) : BinaryExpression
binaryType ExpressionType
name string
left Expression
right Expression
conversion LambdaExpression
liftToNull bool
return BinaryExpression
        private static BinaryExpression GetUserDefinedAssignOperatorOrThrow(ExpressionType binaryType, string name, Expression left, Expression right, LambdaExpression conversion, bool liftToNull)
        {
            BinaryExpression b = GetUserDefinedBinaryOperatorOrThrow(binaryType, name, left, right, liftToNull);
            if (conversion == null)
            {
                // return type must be assignable back to the left type
                if (!TypeUtils.AreReferenceAssignable(left.Type, b.Type))
                {
                    throw Error.UserDefinedOpMustHaveValidReturnType(binaryType, b.Method.Name);
                }
            }
            else
            {
                // add the conversion to the result
                ValidateOpAssignConversionLambda(conversion, b.Left, b.Method, b.NodeType);
                b = new OpAssignMethodConversionBinaryExpression(b.NodeType, b.Left, b.Right, b.Left.Type, b.Method, conversion);
            }
            return b;
        }
Expression