protected override IEnumerable <Expression> GetShortCircuitReturns(GotoExpression returnNull, ObjectMapperData mapperData)
        {
            if (!mapperData.Context.IsForDerivedType && mapperData.TargetMemberIsEnumerableElement())
            {
                yield return(Expression.IfThen(mapperData.SourceObject.GetIsDefaultComparison(), returnNull));
            }

            var alreadyMappedShortCircuit = GetAlreadyMappedObjectShortCircuitOrNull(returnNull.Target, mapperData);

            if (alreadyMappedShortCircuit != null)
            {
                yield return(alreadyMappedShortCircuit);
            }
        }
示例#2
0
        private static bool CreateElementMappingDataFor(
            ObjectMapperData mapperData,
            Expression sourceElementValue)
        {
            if (!mapperData.TargetMemberIsEnumerableElement())
            {
                return(true);
            }

            if (mapperData.TargetMember.IsEnumerable)
            {
                return(!mapperData.EnumerablePopulationBuilder.TargetElementsAreSimple &&
                       sourceElementValue.Type.IsAssignableTo(mapperData.SourceMember.ElementType));
            }

            return(false);
        }