/// <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)); }
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)); }
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; } }
public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) { return(AddRestrictions(_metaForwardee.BindDeleteIndex(binder, indexes))); }
public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) { return(scriptItem.PostProcessBindResult(metaDynamic.BindDeleteIndex(binder, indexes))); }
public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) => _innerMetaObject.BindDeleteIndex(binder, indexes);
public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) { return(binder.FallbackDeleteIndex(_baseMetaObject, indexes, AddTypeRestrictions(_metaObject.BindDeleteIndex(binder, indexes)))); }
public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) { return(metaObject.BindDeleteIndex(binder, indexes)); }
/// <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); }