示例#1
0
        private static LambdaExpression Unpack(LambdaExpression expression, Type voidType)
        {
            var slimLambda   = expression != null ? (LambdaExpressionSlim)expression.ToExpressionSlim() : null;
            var slimVoidType = voidType?.ToTypeSlim();

            return((LambdaExpression)ExpressionSlimTupletizer.Unpack(slimLambda, slimVoidType).ToExpression());
        }
示例#2
0
        private static Expression Pack(Expression expression, params ParameterExpression[] parameters)
        {
            var slimExpression = expression?.ToExpressionSlim();
            var slimParameters = parameters?.Select(p => (ParameterExpressionSlim)p.ToExpressionSlim()).ToArray();

            ExpressionSlimTupletizer.Pack(slimExpression, slimParameters);

            // This helper should only be used for argument checks...
            throw new Exception();
        }
示例#3
0
        private static void Unpack(LambdaExpression expression, out Expression body, out IEnumerable <ParameterExpression> parameters)
        {
            var slimLambda = expression != null ? (LambdaExpressionSlim)expression.ToExpressionSlim() : null;

            ExpressionSlimTupletizer.Unpack(slimLambda, out var slimBody, out var slimParameters);
            var fatLambda = (LambdaExpression)ExpressionSlim.Lambda(slimBody, slimParameters).ToExpression();

            body       = fatLambda.Body;
            parameters = fatLambda.Parameters;
        }
示例#4
0
 private static bool IsTuple(Type type)
 {
     return(ExpressionSlimTupletizer.IsTuple(type.ToTypeSlim()));
 }
示例#5
0
        private static IEnumerable <Expression> Unpack(Expression expression)
        {
            var slimExpression = expression?.ToExpressionSlim();

            return(ExpressionSlimTupletizer.Unpack(slimExpression).Select(x => x.ToExpression()));
        }
示例#6
0
        private static LambdaExpression Unpack(LambdaExpression expression)
        {
            var slimLambda = expression != null ? (LambdaExpressionSlim)expression.ToExpressionSlim() : null;

            return((LambdaExpression)ExpressionSlimTupletizer.Unpack(slimLambda).ToExpression());
        }
示例#7
0
        private static Expression Pack(IEnumerable <Expression> expressions)
        {
            var slimExpressions = expressions?.Select(e => e.ToExpressionSlim());

            return(ExpressionSlimTupletizer.Pack(slimExpressions).ToExpression());
        }