net mvc imapper example ejemplo custom c# .net automapper-3

c# - mvc - Automapper: pasando el parámetro al método Map



automapper nuget (2)

No puede hacer exactamente lo que quiere, pero puede acercarse bastante al especificar las opciones de mapeo cuando llama a Map. Ignora la propiedad en tu configuración:

cfg.CreateMap<Message, MessageDto>() .ForMember(dest => dest.Timestamp, opt => opt.Ignore()) ;

Luego pase las opciones cuando llame a su mapa:

int someValue = 5; var dto = Mapper.Map<Message, MessageDto>(message, opt => opt.AfterMap((src, dest) => dest.TimeStamp = src.SendTime.AddMinutes(someValue)));

Tenga en cuenta que necesita usar la Mapper.Map<TSrc, TDest> para usar esta sintaxis.

Estoy usando Automapper en un proyecto y necesito valorizar dinámicamente un campo de mi objeto de destino.

En mi configuración tengo algo similar:

cfg.CreateMap<Message, MessageDto>() // ... .ForMember(dest => dest.Timestamp, opt => opt.MapFrom(src => src.SentTime.AddMinutes(someValue))) //... ;

El someValue en el código de configuración es un parámetro que necesito pasar en tiempo de ejecución al asignador y no es un campo del objeto fuente.

¿Hay una manera de lograr esto? Algo como esto:

Mapper.Map<MessageDto>(msg, someValue));


Otra opción posible mientras usa el método de Mapa sería el uso del diccionario de Artículos. Ejemplo:

int someValue = 5; var dto = Mapper.Map<Message>(message, opts => opts.Items["Timestamp"] = message.SentTime.AddMinutes(someValue));

Es un poco menos de código y tiene la ventaja de campos especificados dinámicamente.