in tools/AutoMapper/MapperConfiguration.cs [218:265]
private TypeMap GetTypeMap(TypePair initialTypes)
{
var doesNotHaveMapper = FindMapper(initialTypes) == null;
foreach (var types in initialTypes.GetRelatedTypePairs())
{
if (types != initialTypes && _typeMapPlanCache.TryGetValue(types, out var typeMap))
{
if (typeMap != null)
{
return typeMap;
}
}
typeMap = FindTypeMapFor(types);
if (typeMap != null)
{
return typeMap;
}
typeMap = FindClosedGenericTypeMapFor(types);
if (typeMap != null)
{
return typeMap;
}
if (doesNotHaveMapper)
{
typeMap = FindConventionTypeMapFor(types);
if (typeMap != null)
{
return typeMap;
}
}
}
if (doesNotHaveMapper
&& Configuration.CreateMissingTypeMaps
&& !(initialTypes.SourceType.IsAbstract() && initialTypes.SourceType.IsClass())
&& !(initialTypes.DestinationType.IsAbstract() && initialTypes.DestinationType.IsClass())
&& !ExcludedTypes.Contains(initialTypes.SourceType)
&& !ExcludedTypes.Contains(initialTypes.DestinationType))
{
lock (this)
{
return Configuration.CreateInlineMap(_typeMapRegistry, initialTypes);
}
}
return null;
}