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); }
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 )); }