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); } }
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); }