EmitMapper: tutto bello ma come le mappiamo le liste?
Vi ricordate lo scenario? bene, cosa risolviamo con la nostra configurazione? due possibili casistiche:mapperManager.GetMapper<SpecialCategory, SpecialCategoryDto> (
new MappingConfiguration()
.OnListItemMapping<Category, CategoryDto>( e =>
{
if( e.Source is SpecialCategory )
{
e.Destination = specialCategoryMapper.Map( ( SpecialCategory )e.Source );
e.Handled = true;
}
} )
.OnListItemMapping<SpecialReferencedType>( e =>
{
e.Destination = specialReferencedTypeMapper.Map( ( SpecialReferencedType )e.Source );
e.Handled = true;
} )
.DeepMap()
.ConvertUsing<Category, Int32>( ei => ei == null ? -1 : ei.Id ) );
- OnListItemMapping
: ci permette di intercettare il processo di mapping in modalità wide-scoped, quindi devo esplicitare i tipi noti ad EmitMapper e non gli eventuali tipi derivati, degli elementi di una list esposta dal nostro modello e decidere se ci interessa prendere in carico il processo di mapping; - OnListItemMapping
: ci permette di intercettare il processo di mapping in modalità narrow-scoped, quindi posso esplicitare un qualsiasi tipo e se l’item che si sta convertendo è di quel tipo specifico l’interceptor verrà invocato, degli elementi di una list esposta dal nostro modello e decidere se ci interessa prendere in carico il processo di mapping;
.m