Na criação de uma aplicação, a recomendação mais ouvida é a separação das responsabilidades entre as camadas do sistema. Hoje em dia existe diversos padrões de projetos que auxilíam na implementação desse processo. Porém, há casos em que o uso simples da abstração de camadas não é suficiente pra garantir um bom desacoplamento entre diferentes partes do sistema, e é nesse contexto que podemos usar o automapper.
O AutoMapper é uma biblioteca utilizada para mapear objetos. Ele ajuda a resolver esse problema ao automatizar o mapeamento entre diferentes objetos de diferentes camadas, como entre entidades de bancos de dados e objetos de transferências de dados (DTOs). Isso facilita o desenvolvimento ao reduzir a quantidade de código manual para conversões, promovendo um maior desacoplamento e flexibiliade do projeto.
Foi criado para desenvolver um problema enganosamente complexo, que é o mapeamento de um objeto para outro. Esse tipo de tarefa geralmente é chata e tediosa, então esta pequena biblioteca foi criada para resolver essa situação e forma simples.
Sem AutoMapper:
var dto = new ClienteDTO {
Nome = cliente.Nome,
Idade = cliente.Idade
};
Com AutoMapper
var dto = _mapper.Map<ClienteDTO>(Cliente);
Desse modo você evita escrever o código manualmente, facilitando o processo de conversão.
Para utilizar esta biblioteca precisamos adicioná-la via NuGet
install-package automapper