Example #1
0
        private static void AddDerivedTargetTypeMappings(
            IObjectMappingData declaredTypeMappingData,
            IEnumerable <Type> derivedTargetTypes,
            ICollection <Expression> derivedTypeMappingExpressions)
        {
            var declaredTypeMapperData = declaredTypeMappingData.MapperData;

            derivedTargetTypes = derivedTargetTypes
                                 .OrderBy(t => t, TypeComparer.MostToLeastDerived);

            foreach (var derivedTargetType in derivedTargetTypes)
            {
                var targetTypeCondition = GetTargetIsDerivedTypeCheck(derivedTargetType, declaredTypeMapperData);

                var ifDerivedTargetTypeThenMap = GetIfConditionThenMapExpression(
                    declaredTypeMappingData,
                    targetTypeCondition,
                    declaredTypeMapperData.SourceObject,
                    derivedTargetType);

                derivedTypeMappingExpressions.AddUnlessNullOrEmpty(ifDerivedTargetTypeThenMap);
            }
        }