2012-03-16 33 views
14

Suponiendo los objetos que se aplica la relación con AutoMapper no requieren asignaciones personalizadas, ¿hay alguna vez una razón para hacer esto:AutoMapper: ¿por qué usar Map over DynamicMap?

Mapper.CreateMap<Src, Dest>(); 
// .... 
Mapper.Map(SrcObject, DestObj); 

Si no se requieren asignaciones personalizadas, ¿el enfoque anterior se gana nada más justo usando DynamicMap sin la necesidad de ninguna configuración previa?

Mapper.DynamicMap(SrcObject, DestObj); 

entiendo que es DynamicMap necesaria cuando se está mapeando los tipos anónimos, pero yo estoy preguntando si alguna vez es DyanmicMap no se prefiere para los tipos estáticos que no requieren asignaciones personalizados.

Respuesta

16

pasado un tiempo desde la última vez que utilicé AutoMapper, pero si no recuerdo mal:

Para utilizar Map, debe especificar explícitamente los mapas primero a través de CreateMap. Luego puede validar su configuración llamando al AssertConfigurationIsValid.

Esto ocurre justo después de iniciar su aplicación en lugar de encontrar un error en la ejecución media (dado que crea las asignaciones y las valida en el inicio, lo que se recomienda).

También algunos tipos no coinciden con 1: 1, por lo que querrá especificar las asignaciones exactas, no estoy seguro de si DynamicMap hace uso de los mapas que ha introducido manualmente, de hecho creo que no es así.
Acaba de marcar, DynamicMap vuelve a los mapas existentes en la versión actual en github.

También es una cuestión de rendimiento, ya que DynamicMap utiliza la reflexión más que el método Map, ya que ya ha especificado la configuración de asignación y la mayoría de ella ya no tiene que confirmarse sobre la marcha. Sin embargo, no estoy seguro si la nueva versión de Automapper está realizando el almacenamiento en caché a este respecto.

+0

+1 - ahh, veo que hay un 'Mapper.AssertConfigurationIsValid();' - cualquier cosa más allá de los principiantes ?? :) –