public static Expression <TDelegate> Create <TDelegate>(Expression body, ParameterExpression[] parameters, string name = null, bool tailCall = false) { if (parameters.Any(parameter => parameter.IsByRef)) // TODO handle this { return(Expression.Lambda <TDelegate>(body, name, tailCall, parameters)); } var parameterz = new ParameterExpression[parameters.Length]; Array.Copy(parameters, parameterz, parameters.Length); return((Expression <TDelegate>)GetLambdaFactory(typeof(TDelegate))(body, name, tailCall, new ReadOnlyCollection <ParameterExpression>(parameterz))); }
public static LambdaExpression Create(Expression body, Type returnType, ParameterExpression[] parameters, string name = null, bool tailCall = false) { if (parameters.Any(parameter => parameter.IsByRef)) // TODO handle this { return(Expression.Lambda(body, name, tailCall, parameters)); } var parameterz = new ParameterExpression[parameters.Length]; Array.Copy(parameters, parameterz, parameters.Length); return(GetLambdaFactory(returnType, parameters)(body, name, tailCall, new ReadOnlyCollection <ParameterExpression>(parameterz))); }