public Expression <Func <TSource, TDestination> > CombineIntoMapperWithConstructor( Expression <Func <TSource, TDestination> > recipientExpression, Expression <Func <TSource, TDestination> > donorExpression) { var paramReplacer = new ParameterReplacerVisitor( donorExpression.Parameters[0], recipientExpression.Parameters[0]); var donorWithCorrectedParam = (Expression <Func <TSource, TDestination> >)paramReplacer.Visit(donorExpression); var visitor = new MemberInitBindingsCombinationVisitor <TSource, TDestination>() { recipientExpression = recipientExpression, donorExpression = donorWithCorrectedParam }; var combinedExpr = (Expression <Func <TSource, TDestination> >)visitor.Visit(recipientExpression); return(combinedExpr); }