Nella maggior parte degli scenari di mappatura, sappiamo il tipo stiamo mappando ad momento della compilazione. In alcuni casi, il tipo di origine non è noto fino al runtime , in particolare negli scenari in cui utilizzo i tipi dinamici o negli scenari di estensibilità .
La chiamata DynamicMap crea una configurazione per il tipo di oggetto origine passato al tipo di destinazione specificato. Se i due tipi sono già stati mappati, AutoMapper salta questo passaggio (come posso chiamare DynamicMap più volte per questo esempio).
Fonte: http://lostechies.com/jimmybogard/2009/04/15/automapper-feature-interfaces-and-dynamic-mapping/
Shorter versione: DynamicMap è lo stesso di chiamare CreateMap poi Mappa.
Alcuni manichino classe Person
Diciamo che avere una lista di persone.
var persons = new List<Person>();
for (int i = 0; i < 100; i++)
{
persons.Add(new Person {
Name = String.Format("John {0}", i),
Surname = String.Format("Smith {0}", i),
Age = i });
}
Quindi si seleziona una persona aggiungendo una nuova proprietà.
var anonymousTypes = persons.Select(p => new {
p.Name,
p.Surname,
FullName = String.Format("{0}, {1}", p.Surname,p.Name) }).ToList();
Per ottenere mappati correttamente la prima persona
var testFile = Mapper.DynamicMap<Person>(anonymousTypes.First());
Per ottenere correttamente mappato tutte le persone si usa
var testFiles = anonymousTypes.Select(Mapper.DynamicMap<Person>).ToList();
controllare Forse la seguente soluzione: http://stackoverflow.com/ a/5978050/1241400 –
@plurby, che non si applica affatto, poiché quella domanda si riferisce a due tipi noti, ho una lista di un tipo anonimo, quindi ho bisogno di usare 'DynamicMap' invece di' Map' – CaffGeek
Ho controllato e funziona quando usi query.Select (Mapper.DynamicMap) .ToList(); sintassi. Puoi fornire il codice per la tua query e DTO in modo che possiamo aiutarti a risolvere il problema? –