コード例 #1
0
ファイル: DeleteIndexBinder.cs プロジェクト: raj581/Marvin
        /// <summary>
        /// Performs the binding of the dynamic delete index operation.
        /// </summary>
        /// <param name="target">The target of the dynamic delete index operation.</param>
        /// <param name="args">An array of arguments of the dynamic delete index 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");

            return(target.BindDeleteIndex(this, args));
        }
コード例 #2
0
        public override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args)
        {
            var obj = target.BindDeleteIndex(new CompatibilityDeleteIndexBinder(_context, CallInfo), args);

            return(new DynamicMetaObject(Microsoft.Scripting.Ast.Utils.Try(
                                             obj.Expression,
                                             Expression.Constant(1L, typeof(object))
                                             ).Catch(typeof(MissingMemberException),
                                                     Expression.Constant(0L, typeof(object))
                                                     ), obj.Restrictions));
        }
コード例 #3
0
        private static bool DeleteIndex(this DynamicMetaObject target, object[] indices)
        {
            var paramNames = Enumerable.Range(0, indices.Length).Select(index => "a" + index).ToArray();
            var paramExprs = paramNames.Select((paramName, index) => Expression.Parameter(GetParamTypeForArg(indices[index]), paramName)).ToArray();
            var parameters = paramExprs.Select(paramExpr => new DynamicMetaObject(paramExpr, BindingRestrictions.Empty)).ToArray();
            var bindResult = target.BindDeleteIndex(new DynamicDeleteIndexBinder(paramNames), parameters);
            var block      = Expression.Block(Expression.Label(CallSiteBinder.UpdateLabel), bindResult.Expression);

            try
            {
                Invoke(block, paramExprs, indices);
                return(true);
            }
            catch (TargetInvocationException exception)
            {
                if (exception.InnerException is InvalidDynamicOperationException)
                {
                    return(false);
                }

                throw;
            }
        }
コード例 #4
0
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     return(AddRestrictions(_metaForwardee.BindDeleteIndex(binder, indexes)));
 }
コード例 #5
0
ファイル: ScriptItem.cs プロジェクト: komiyamma/clear_script
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     return(scriptItem.PostProcessBindResult(metaDynamic.BindDeleteIndex(binder, indexes)));
 }
コード例 #6
0
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) => _innerMetaObject.BindDeleteIndex(binder, indexes);
コード例 #7
0
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     return(binder.FallbackDeleteIndex(_baseMetaObject,
                                       indexes,
                                       AddTypeRestrictions(_metaObject.BindDeleteIndex(binder, indexes))));
 }
コード例 #8
0
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     return(metaObject.BindDeleteIndex(binder, indexes));
 }
コード例 #9
0
        /// <summary>
        /// Performs the binding of the dynamic delete index operation.
        /// </summary>
        /// <param name="target">The target of the dynamic delete index operation.</param>
        /// <param name="args">An array of arguments of the dynamic delete index 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");

            return target.BindDeleteIndex(this, args);
        }