BindBinaryOperation() public method

Performs the binding of the dynamic binary operation.
public BindBinaryOperation ( BinaryOperationBinder binder, DynamicMetaObject arg ) : DynamicMetaObject
binder BinaryOperationBinder An instance of the that represents the details of the dynamic operation.
arg DynamicMetaObject An instance of the representing the right hand side of the binary operation.
return DynamicMetaObject
示例#1
0
        /// <summary>
        /// Performs the binding of the dynamic binary operation.
        /// </summary>
        /// <param name="target">The target of the dynamic operation.</param>
        /// <param name="args">An array of arguments of the dynamic operation.</param>
        /// <returns>The <see cref="DynamicMetaObject"/> representing the result of the binding.</returns>
        public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args) {
            ContractUtils.RequiresNotNull(target, "target");
            ContractUtils.RequiresNotNullItems(args, "args");
            ContractUtils.Requires(args.Length == 1);

            return target.BindBinaryOperation(this, args[0]);
        }
        public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args)
        {
            ContractUtils.RequiresNotNull(target, "target");
            ContractUtils.RequiresNotNull(args, "args");
            ContractUtils.Requires(args.Length == 1, "args");
            DynamicMetaObject obj2 = args[0];

            ContractUtils.RequiresNotNull(obj2, "args");
            return(target.BindBinaryOperation(this, obj2));
        }
        /// <summary>
        /// Performs the binding of the dynamic binary operation.
        /// </summary>
        /// <param name="target">The target of the dynamic operation.</param>
        /// <param name="args">An array of arguments of the dynamic operation.</param>
        /// <returns>The <see cref="DynamicMetaObject"/> representing the result of the binding.</returns>
        public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args)
        {
            ContractUtils.RequiresNotNull(target, nameof(target));
            ContractUtils.RequiresNotNull(args, nameof(args));
            ContractUtils.Requires(args.Length == 1, nameof(args));

            var arg0 = args[0];
            ContractUtils.RequiresNotNull(arg0, nameof(args));

            return target.BindBinaryOperation(this, arg0);
        }
示例#4
0
        /// <summary>
        /// Performs the binding of the dynamic binary operation.
        /// </summary>
        /// <param name="target">The target of the dynamic operation.</param>
        /// <param name="args">An array of arguments of the dynamic operation.</param>
        /// <returns>The <see cref="DynamicMetaObject"/> representing the result of the binding.</returns>
        public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args)
        {
            ArgumentNullException.ThrowIfNull(target);
            ArgumentNullException.ThrowIfNull(args);
            ContractUtils.Requires(args.Length == 1, nameof(args));

            var arg0 = args[0];

            ArgumentNullException.ThrowIfNull(arg0, nameof(args));

            return(target.BindBinaryOperation(this, arg0));
        }
示例#5
0
        /// <summary>
        /// Performs the binding of the dynamic binary operation.
        /// </summary>
        /// <param name="target">The target of the dynamic operation.</param>
        /// <param name="args">An array of arguments of the dynamic operation.</param>
        /// <returns>The <see cref="DynamicMetaObject"/> representing the result of the binding.</returns>
        public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args)
        {
            ContractUtils.RequiresNotNull(target, nameof(target));
            ContractUtils.RequiresNotNull(args, nameof(args));
            ContractUtils.Requires(args.Length == 1, nameof(args));

            var arg0 = args[0];

            ContractUtils.RequiresNotNull(arg0, nameof(args));

            return(target.BindBinaryOperation(this, arg0));
        }
            public static void TestMetaObject(DynamicMetaObject target, DynamicMetaObject arg, ExpressionType[] testExpressions, bool isValid = true)
            {
                foreach (ExpressionType expType in testExpressions)
                {
                    BinaryOperationBinder binder = new TestBinaryOperationBinder(expType);
                    DynamicMetaObject result = target.BindBinaryOperation(binder, arg);
                    Assert.IsNotNull(result);

                    //The resulting expression is a convert expression, that's why we are checking for unary expression here.
                    UnaryExpression expression = result.Expression as UnaryExpression;
                    Assert.IsNotNull(expression);

                    // The operand expression is supposed to be a binary expression.
                    ExpressionType expectedType = isValid ? expType : ExpressionType.Throw;
                    Assert.AreEqual<ExpressionType>(expectedType, expression.Operand.NodeType);
                }
            }
            public static void TestBindParams(DynamicMetaObject target, DynamicMetaObject arg)
            {
                BinaryOperationBinder binder = new TestBinaryOperationBinder(ExpressionType.Equal);

                ExceptionTestHelper.ExpectException<ArgumentNullException>(() => { var result = target.BindBinaryOperation(null, arg); });
                ExceptionTestHelper.ExpectException<ArgumentNullException>(() => { var result = target.BindBinaryOperation(binder, null); });
            }