private void CheckPropertyMaps(ICollection<TypeMap> typeMapsChecked, ResolutionContext context)
{
foreach (var propertyMap in context.TypeMap.GetPropertyMaps())
{
if (propertyMap.Ignored) continue;
var sourceType = propertyMap.SourceType;
if (sourceType == null) continue;
// when we don't know what the source type is, bail
if (sourceType.IsGenericParameter || sourceType == typeof (object))
return;
var destinationType = propertyMap.DestinationProperty.MemberType;
var memberTypeMap = _config.ResolveTypeMap(sourceType,
destinationType);
if (typeMapsChecked.Any(typeMap => Equals(typeMap, memberTypeMap)))
continue;
var memberContext = new ResolutionContext(null, null, new TypePair(sourceType, destinationType), context)
{
TypeMap = memberTypeMap
};
try
{
DryRunTypeMap(typeMapsChecked, memberContext);
}
catch (AutoMapperMappingException ex)
{
ex.PropertyMap = propertyMap;
throw;
}
}
}
}