public IEnumerable <Expression> GetPopulation(MappingExpressionFactoryBase.MappingCreationContext context) { var mappingData = context.MappingData; var mapperData = context.MapperData; GetCreationCallbacks(context, out var preCreationCallback, out var postCreationCallback); var populationsAndCallbacks = GetPopulationsAndCallbacks(mappingData).ToList(); if (context.InstantiateLocalVariable && mapperData.Context.UseLocalVariable) { yield return(preCreationCallback); var assignCreatedObject = postCreationCallback != null; yield return(GetLocalVariableInstantiation(assignCreatedObject, populationsAndCallbacks, mappingData)); yield return(postCreationCallback); } yield return(GetObjectRegistrationCallOrNull(mapperData)); foreach (var population in populationsAndCallbacks) { yield return(population); } mappingData.MapperKey.AddSourceMemberTypeTesterIfRequired(mappingData); }
private static void GetCreationCallbacks( MappingExpressionFactoryBase.MappingCreationContext context, out Expression preCreationCallback, out Expression postCreationCallback) { if (context.RuleSet.Settings.UseSingleRootMappingExpression || !context.InstantiateLocalVariable || context.MapperData.TargetIsDefinitelyPopulated()) { preCreationCallback = postCreationCallback = null; return; } preCreationCallback = GetCreationCallbackOrNull(Before, context.MapperData); postCreationCallback = GetCreationCallbackOrNull(After, context.MapperData); }