Estoy usando AutoMapper en mi sitio web ASP.NET MVC para asignar mis objetos de base de datos a objetos ViewModel y estoy tratando de usar varios perfiles para mapear los mismos tipos, pero usando otra lógica Tuve la idea de hacerlo al leer Matt's blog post donde dice:Usar perfiles en Automapper para mapear los mismos tipos con lógica diferente
La parte realmente clave es el perfil de configuración de AutoMapper. Puede agrupar configuraciones con perfiles. Quizás en un perfil, usted da formato a las fechas de una manera, en otro perfil puede formatear las fechas de otra manera. Solo estoy usando un perfil aquí.
Así que he creado un perfil para un caso:
public class MyProfile : Profile
{
protected override string ProfileName
{
get
{
return "MyProfile";
}
}
protected override void Configure()
{
CreateMap<DateTime, String>().ConvertUsing<StringFromDateTimeTypeConverter>();
}
}
public class StringFromDateTimeTypeConverter : ITypeConverter<DateTime, String>
{
public string Convert(DateTime source)
{
return source.ToString("dd/mm/yyyy", CultureInfo.InvariantCulture);
}
}
y otra para otro caso:
public class MyProfile2 : Profile
{
protected override string ProfileName
{
get
{
return "MyProfile2";
}
}
protected override void Configure()
{
CreateMap<DateTime, String>().ConvertUsing<AnotherStringFromDateTimeTypeConverter>();
}
}
public class AnotherStringFromDateTimeTypeConverter : ITypeConverter<DateTime, String>
{
public string Convert(DateTime source)
{
return source.ToString("mm - yyyy", CultureInfo.InvariantCulture);
}
}
Sin embargo, no se encuentra ninguna sobrecarga del método Mapper.Map<>()
para especificar una perfil. También eché un vistazo al objeto Configuration
sin suerte.
El último perfil registrado siempre tiene prioridad.
¿Hay alguna manera de usar perfiles para este propósito?
¡Gracias, lo haré! – sebd
¿Será eso seguro para hilos sin el bloqueo? Por ejemplo, 'MapperRegistry.AllMappers()' es estático y 'TypeMapFactory' tiene un diccionario estático. –
Normalmente, la configuración solo se llama una vez por AppDomain al inicio. Solo necesita encontrar la costura correcta en el modelo de hosting que tenga para el lugar donde va (diferente para WCF, ASP.NET, WinForms, etc.) –