private DynamicMetaObject FallbackToInvoke(DynamicMetaObject target, DynamicMetaObject[] args) { var argsExpr = new Expression[args.Length + 1]; argsExpr[0] = Expression.Dynamic(_factory.GetMemberBinder(this.Name), typeof(object), target.Expression); for (int i = 0; i < args.Length; i++) { argsExpr[i + 1] = args[i].Expression; } var callExpr = Expression.Dynamic(_factory.InvokeBinder(this.CallInfo), typeof(object), argsExpr); return(new DynamicMetaObject(callExpr, BindingRestrictions.GetInstanceRestriction(target.Expression, target.Value))); }