예제 #1
0
        public virtual Expression FinalisePopulationBranch(
            Expression alternatePopulation,
            IDataSource nextDataSource,
            IMemberMapperData mapperData)
        {
            MultiInvocationsProcessor.Process(
                this,
                mapperData,
                out var condition,
                out var value,
                out var variables);

            var population = mapperData.GetTargetMemberPopulation(value);

            if (condition != null)
            {
                population = (alternatePopulation == null)
                    ? Expression.IfThen(condition, population)
                    : GetBranchedPopulation(
                    condition,
                    population,
                    alternatePopulation,
                    nextDataSource,
                    mapperData);
            }

            if (variables.Any())
            {
                population = Expression.Block(variables, population);
            }

            return(population);
        }