Beispiel #1
0
        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)));
        }