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); }
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); }
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))); }
private ParameterListSyntax GetParameterList() { return ParameterList( SeparatedList<ParameterSyntax>( CtorParams.Select(param => param.CodegenSyntaxAsParameter()))); }
private ActionTransactionalList(CtorParams pars) : base(pars.baseList) { _updateAction = pars.updateAction; }