Пример #1
0
            private static Expression[] GetArgs(params MetaObject[] args)
            {
                Expression[] paramArgs = MetaObject.GetExpressions(args);

                for (int i = 0; i < paramArgs.Length; i++)
                {
                    paramArgs[i] = Helpers.Convert(args[i].Expression, typeof(object));
                }

                return(paramArgs);
            }
Пример #2
0
        private MetaObject MakeDeferred(Restrictions rs, params MetaObject[] args)
        {
            var exprs = MetaObject.GetExpressions(args);

            // TODO: we should really be using the same delegate as the CallSite
            Type delegateType = DelegateHelpers.MakeDeferredSiteDelegate(args, typeof(object));

            // Because we know the arguments match the delegate type (we just created the argument types)
            // we go directly to DynamicExpression.Make to avoid a bunch of unnecessary argument validation
            return(new MetaObject(
                       DynamicExpression.Make(
                           typeof(object),
                           delegateType,
                           this,
                           new ReadOnlyCollection <Expression>(exprs)
                           ),
                       rs
                       ));
        }