Visto che abbiamo fatto 30 con la nostra configurazione custom perché non fare 31?
mapperManager.GetMapper<SpecialCategory, SpecialCategoryDto>
(
     new MappingConfiguration()
         .MatchListItemType<SpecialReferencedType, SpecialReferencedTypeDto>()
         .DeepMap()
);
Molto semplicemente vogliamo che l’utilizzatore possa spiegare come mappare i tipi presenti in una lista, senza necessariamente dover intercettare il processo di conversione. MatchListItemType fa proprio questo vi permette di associare in maniera statica un tipo nel dominio di partenza con un tipo nel dominio di destinazione.
A questo punto potreste avere un interessante problema, se il dominio di partenza è gestito da NHibernate i vostri item non saranno mai del tipo “descritto” perché quanto iterate gli elementi in realtà state iterando i proxy generati da NHibernate, per ovviare a questo problema la configurazione vi permette di esplicitare un TypeResolver che è una Func che vi permette di customizzare in che modo il processo di mapping risolva i tipi:
new MappingConfiguration()
    .MatchListItemType<SpecialReferencedType, SpecialReferencedTypeDto>()
    .ResolveListItemTypeUsing( o => o.GetType() )

Figo Smile, se poi pensiamo questa cosa combinata con la possibilità di iniettare un container per IoC nella configurazione abbiamo la massima flessibilità.
.m