コード例 #1
0
        public Expression BuildExpression(TypeMapPlanBuilder builder)
        {
            if (!CanResolve)
            {
                return(null);
            }

            var ctorArgs = CtorParams.Select(p => p.CreateExpression(builder));

            ctorArgs =
                ctorArgs.Zip(Ctor.GetParameters(),
                             (exp, pi) => exp.Type == pi.ParameterType ? exp : Convert(exp, pi.ParameterType))
                .ToArray();
            var newExpr = New(Ctor, ctorArgs);

            return(newExpr);
        }
コード例 #2
0
        public Expression BuildExpression(
            TypeMapRegistry typeMapRegistry,
            ParameterExpression srcParam,
            ParameterExpression ctxtParam)
        {
            if (!CanResolve)
            {
                return(null);
            }

            var ctorArgs = CtorParams.Select(p => p.CreateExpression(typeMapRegistry, srcParam, ctxtParam));

            ctorArgs =
                ctorArgs.Zip(Ctor.GetParameters(),
                             (exp, pi) => exp.Type == pi.ParameterType ? exp : Convert(exp, pi.ParameterType))
                .ToArray();
            var newExpr = New(Ctor, ctorArgs);

            return(newExpr);
        }
コード例 #3
0
        public Expression NewExpression(Expression instanceParameter)
        {
            var parameters = CtorParams.Select(map =>
            {
                var result = new ExpressionResolutionResult(instanceParameter, Ctor.DeclaringType);

                var matchingExpressionConverter =
                    ExpressionResultConverters.FirstOrDefault(c => c.CanGetExpressionResolutionResult(result, map));

                if (matchingExpressionConverter == null)
                {
                    throw new Exception("Can't resolve this to Queryable Expression");
                }

                result = matchingExpressionConverter.GetExpressionResolutionResult(result, map);

                return(result);
            });

            return(Expression.New(Ctor, parameters.Select(p => p.ResolutionExpression)));
        }
コード例 #4
0
ファイル: CodegenCtor.cs プロジェクト: lanicon/nesper
 private ParameterListSyntax GetParameterList()
 {
     return ParameterList(
         SeparatedList<ParameterSyntax>(
             CtorParams.Select(param => param.CodegenSyntaxAsParameter())));
 }
コード例 #5
0
 private ActionTransactionalList(CtorParams pars) : base(pars.baseList)
 {
     _updateAction = pars.updateAction;
 }