Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindBinaryOperation C# (CSharp) Method

BindBinaryOperation() private method

private BindBinaryOperation ( CSharpBinaryOperationBinder payload, ArgumentObject arguments, LocalVariableSymbol>.Dictionary dictionary ) : EXPR
payload CSharpBinaryOperationBinder
arguments ArgumentObject
dictionary LocalVariableSymbol>.Dictionary
return Microsoft.CSharp.RuntimeBinder.Semantics.EXPR
        private EXPR BindBinaryOperation(
                CSharpBinaryOperationBinder payload,
                ArgumentObject[] arguments,
                Dictionary<int, LocalVariableSymbol> dictionary)
        {
            if (arguments.Length != 2)
            {
                throw Error.BindBinaryOperatorRequireTwoArguments();
            }

            ExpressionKind ek = Operators.GetExpressionKind(GetOperatorKind(payload.Operation, payload.IsLogicalOperation));
            EXPR arg1 = CreateArgumentEXPR(arguments[0], dictionary[0]);
            EXPR arg2 = CreateArgumentEXPR(arguments[1], dictionary[1]);

            arg1.errorString = Operators.GetDisplayName(GetOperatorKind(payload.Operation, payload.IsLogicalOperation));
            arg2.errorString = Operators.GetDisplayName(GetOperatorKind(payload.Operation, payload.IsLogicalOperation));

            if (ek > ExpressionKind.EK_MULTIOFFSET)
            {
                ek = (ExpressionKind)(ek - ExpressionKind.EK_MULTIOFFSET);
            }
            return _binder.BindStandardBinop(ek, arg1, arg2);
        }
        #endregion