private Expression GetTypeCheckConditionOrNull(IMemberMapperData mapperData) { var sourceType = (SourceType == _allSourceTypes) ? typeof(object) : SourceType; var contextTypes = new[] { sourceType, TargetType }; var context = mapperData.GetAppropriateMappingContext(contextTypes); if (!TargetType.IsDerivedFrom(context.TargetType)) { return(null); } var contextAccess = mapperData.GetAppropriateMappingContextAccess(contextTypes); if (contextAccess == mapperData.MappingDataObject) { return(null); } var targetAccess = mapperData.GetTargetAccess(contextAccess, TargetType); var targetAccessNotNull = targetAccess.GetIsNotDefaultComparison(); return(targetAccessNotNull); }
public static Expression UseTargetMember(IMemberMapperData mapperData, Expression contextAccess, Type targetType) => mapperData.GetTargetAccess(contextAccess, targetType);