private static void MapPropertyValue(ResolutionContext context, IMappingEngineRunner mapper, object mappedObject, PropertyMap propertyMap) { if (!propertyMap.CanResolveValue()) { return; } var result = propertyMap.ResolveValue(context); var newContext = context.CreateMemberContext(null, result.Value, null, result.Type, propertyMap); if (!propertyMap.ShouldAssignValue(newContext)) { return; } try { var propertyValueToAssign = mapper.Map(newContext); if (propertyMap.CanBeSet) { propertyMap.DestinationProperty.SetValue(mappedObject, propertyValueToAssign); } } catch (MapperMappingException) { throw; } catch (Exception ex) { throw new MapperMappingException(newContext, ex); } }
private void MapPropertyValue(ResolutionContext context, IMappingEngineRunner mapper, object mappedObject, PropertyMap propertyMap) { if (propertyMap.CanResolveValue()) { ResolutionResult result; try { result = propertyMap.ResolveValue(context); } catch (AutoMapperMappingException) { throw; } catch (Exception ex) { var errorContext = CreateErrorContext(context, propertyMap, null); throw new AutoMapperMappingException(errorContext, ex); } if (result.ShouldIgnore) { return; } object destinationValue = propertyMap.DestinationProperty.GetValue(mappedObject); var sourceType = result.Type; var destinationType = propertyMap.DestinationProperty.MemberType; var typeMap = mapper.ConfigurationProvider.FindTypeMapFor(result, destinationType); Type targetSourceType = typeMap != null ? typeMap.SourceType : sourceType; var newContext = context.CreateMemberContext(typeMap, result.Value, destinationValue, targetSourceType, propertyMap); if (!propertyMap.ShouldAssignValue(newContext)) { return; } try { object propertyValueToAssign = mapper.Map(newContext); AssignValue(propertyMap, mappedObject, propertyValueToAssign); } catch (AutoMapperMappingException) { throw; } catch (Exception ex) { throw new AutoMapperMappingException(newContext, ex); } } }
private static void MapPropertyValue(ResolutionContext context, IMappingEngineRunner mapper, object mappedObject, PropertyMap propertyMap) { if (!propertyMap.CanResolveValue()) return; var result = propertyMap.ResolveValue(context); var newContext = context.CreateMemberContext(null, result.Value, null, result.Type, propertyMap); if (!propertyMap.ShouldAssignValue(newContext)) return; try { var propertyValueToAssign = mapper.Map(newContext); if (propertyMap.CanBeSet) { TypeConverter typeConverter = TypeDescriptor.GetConverter(propertyValueToAssign); Type sourcePropertyType = propertyValueToAssign.GetType(); Type destinationPropertyType = propertyMap.DestinationProperty.MemberType; if (typeConverter != null && sourcePropertyType != destinationPropertyType) { propertyValueToAssign = typeConverter.ConvertTo(propertyValueToAssign, destinationPropertyType); } propertyMap.DestinationProperty.SetValue(mappedObject, propertyValueToAssign); } } catch (Exception ex) { throw new AutoMapperMappingException(newContext, ex); } }
private void MapPropertyValue(ResolutionContext context, object mappedObject, PropertyMap propertyMap) { if (!propertyMap.CanResolveValue() || !propertyMap.ShouldAssignValuePreResolving(context)) { return; } ResolutionResult result; Exception resolvingExc = null; try { result = propertyMap.ResolveValue(context); } catch (AutoMapperMappingException) { throw; } catch (Exception ex) { var errorContext = CreateErrorContext(context, propertyMap, null); resolvingExc = new AutoMapperMappingException(errorContext, ex); result = new ResolutionResult(context); } if (result.ShouldIgnore) { return; } object destinationValue = propertyMap.GetDestinationValue(mappedObject); var sourceType = result.Type; var destinationType = propertyMap.DestinationProperty.MemberType; var typeMap = context.ConfigurationProvider.ResolveTypeMap(result, destinationType); Type targetSourceType = typeMap != null ? typeMap.SourceType : sourceType; var newContext = context.CreateMemberContext(typeMap, result.Value, destinationValue, targetSourceType, propertyMap); if (!propertyMap.ShouldAssignValue(newContext)) { return; } // If condition succeeded and resolving failed, throw if (resolvingExc != null) { throw resolvingExc; } try { object propertyValueToAssign = context.Engine.Map(newContext); AssignValue(propertyMap, mappedObject, propertyValueToAssign); } catch (AutoMapperMappingException) { throw; } catch (Exception ex) { throw new AutoMapperMappingException(newContext, ex); } }
private void MapPropertyValue(ResolutionContext context, IMappingEngineRunner mapper, object mappedObject, PropertyMap propertyMap) { if (propertyMap.CanResolveValue() && propertyMap.ShouldAssignValuePreResolving(context)) { ResolutionResult result; Exception resolvingExc = null; try { result = propertyMap.ResolveValue(context); } catch (AutoMapperMappingException) { throw; } catch (Exception ex) { var errorContext = CreateErrorContext(context, propertyMap, null); resolvingExc = new AutoMapperMappingException(errorContext, ex); result = new ResolutionResult(context); } if (result.ShouldIgnore) return; object destinationValue = propertyMap.GetDestinationValue(mappedObject); var sourceType = result.Type; var destinationType = propertyMap.DestinationProperty.MemberType; var typeMap = mapper.ConfigurationProvider.FindTypeMapFor(result, destinationType); Type targetSourceType = typeMap != null ? typeMap.SourceType : sourceType; var newContext = context.CreateMemberContext(typeMap, result.Value, destinationValue, targetSourceType, propertyMap); if (!propertyMap.ShouldAssignValue(newContext)) return; // If condition succeeded and resolving failed, throw if (resolvingExc != null) throw resolvingExc; try { object propertyValueToAssign = mapper.Map(newContext); AssignValue(propertyMap, mappedObject, propertyValueToAssign); } catch (AutoMapperMappingException) { throw; } catch (Exception ex) { throw new AutoMapperMappingException(newContext, ex); } } }
private static void MapPropertyValue(ResolutionContext context, IMappingEngineRunner mapper, object mappedObject, PropertyMap propertyMap) { if (!propertyMap.CanResolveValue()) return; var result = propertyMap.ResolveValue(context); var newContext = context.CreateMemberContext(null, result.Value, null, result.Type, propertyMap); if (!propertyMap.ShouldAssignValue(newContext)) return; try { var propertyValueToAssign = mapper.Map(newContext); if (propertyMap.CanBeSet) propertyMap.DestinationProperty.SetValue(mappedObject, propertyValueToAssign); } catch (Exception ex) { throw new AutoMapperMappingException(newContext, ex); } }
private void MapPropertyValue(ResolutionContext context, IMappingEngineRunner mapper, object mappedObject, PropertyMap propertyMap) { if (propertyMap.CanResolveValue()) { if (!propertyMap.ShouldAssignValue(context.CreateMemberContext(null, null, null, null, propertyMap))) return; object destinationValue = null; ResolutionResult result; try { result = propertyMap.ResolveValue(context); } catch (AutoMapperMappingException) { throw; } catch (Exception ex) { var errorContext = CreateErrorContext(context, propertyMap, destinationValue); throw new AutoMapperMappingException(errorContext, ex); } if (result.ShouldIgnore) return; if (propertyMap.UseDestinationValue) { destinationValue = propertyMap.DestinationProperty.GetValue(mappedObject); } var sourceType = result.Type; var destinationType = propertyMap.DestinationProperty.MemberType; var typeMap = mapper.ConfigurationProvider.FindTypeMapFor(result, destinationType); Type targetSourceType = typeMap != null ? typeMap.SourceType : sourceType; var newContext = context.CreateMemberContext(typeMap, result.Value, destinationValue, targetSourceType, propertyMap); try { object propertyValueToAssign = mapper.Map(newContext); AssignValue(propertyMap, mappedObject, propertyValueToAssign); } catch (AutoMapperMappingException) { throw; } catch (Exception ex) { throw new AutoMapperMappingException(newContext, ex); } } }