Saltar al contenido

¿Cómo configurar Auto mapper en el proyecto de biblioteca de clases?

No olvides que en las ciencias cualquier problema casi siempere puede tener más de una resoluciones, no obstante nosotros te enseñaremos lo mejor y más eficiente.

Solución:

Entonces, según la respuesta de Bruno aquí y la publicación de John Skeet sobre singletons, se me ocurrió la siguiente solución para que esto se ejecute solo una vez y esté completamente aislado en la biblioteca de clases, a diferencia de la respuesta aceptada que depende del consumidor de la biblioteca para configurar las asignaciones en el proyecto principal:

public static class Mapping

    private static readonly Lazy Lazy = new Lazy(() =>
    
        var config = new MapperConfiguration(cfg => );
        var mapper = config.CreateMapper();
        return mapper;
    );

    public static IMapper Mapper => Lazy.Value;


public class MappingProfile : Profile

    public MappingProfile()
    
        CreateMap();
        // Additional mappings here...
    

Luego, en su código, donde necesita asignar un objeto a otro, puede hacer lo siguiente:

var destination = Mapping.Mapper.Map(yourSourceInstance);

NOTA: Este código se basa en AutoMapper 6.2 y podría requerir algunos ajustes para versiones anteriores de AutoMapper.

Puede colocar la configuración en cualquier lugar:

public class AutoMapperConfiguration

    public static void Configure()
    
        Mapper.Initialize(x =>
            
                x.AddProfile();              
            );
    


 public class MyMappings : Profile
{
    public override string ProfileName
    
        get  return "MyMappings"; 
    

    protected override void Configure()
    
    ......
    

Pero tiene que ser llamado por la aplicación usando las bibliotecas en algún momento:

void Application_Start()
                   
        AutoMapperConfiguration.Configure();
    

Nadie fuera de su biblioteca tiene que configurar AutoMapper

Le recomiendo que use el enfoque basado en instancias usando un IMapper. De esa manera, nadie fuera de su biblioteca tiene que llamar a ningún método de configuración. Puede definir un MapperConfiguration y cree el mapeador desde allí, todo dentro de la biblioteca de clases.

var config = new MapperConfiguration(cfg => 
    cfg.AddProfile();
    cfg.CreateMap();
);

IMapper mapper = config.CreateMapper();
// or
IMapper mapper = new Mapper(config);
var dest = mapper.Map(new Source());

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *