AutoMapper para C# (.NET): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao AutoMapper para C# (.NET)

\n\n

No desenvolvimento moderno em C# (.NET), surge frequentemente a necessidade de transformar um objeto em outro. Isso pode ser necessário ao transferir dados entre camadas da aplicação (por exemplo, do banco de dados para DTOs de API), ao mapear ViewModel para Entity, ou ao trabalhar com diferentes versões de API. Escrever código manualmente para cada uma dessas transformações é um trabalho tedioso, propenso a erros e difícil de manter. É aqui que o AutoMapper entra em ação.

\n\n

AutoMapper é uma biblioteca popular de código aberto para .NET que automatiza o processo de mapeamento (correspondência) das propriedades de um objeto para outro. Ela é baseada no princípio "convenção sobre configuração" (convention over configuration). Isso significa que, se os nomes e tipos das propriedades nos objetos de origem e destino coincidirem (ou seguirem certas regras), o AutoMapper pode realizar o mapeamento sem a necessidade de especificar regras explicitamente. Se as regras forem diferentes, você pode configurá-las facilmente usando uma API flexível.

\n\n

A biblioteca reduz significativamente a quantidade de código repetitivo, torna o código mais limpo, diminui o número de erros relacionados à atribuição manual e simplifica a refatoração. O AutoMapper é amplamente utilizado em projetos ASP.NET Core, WPF, Xamarin e outras aplicações .NET.

\n\n

Instalação do AutoMapper

\n\n

O AutoMapper é distribuído através do NuGet, o gerenciador de pacotes oficial do .NET. Pode ser instalado de várias maneiras:

\n\n

1. Através do Console do Gerenciador de Pacotes (Package Manager Console)

\n
Install-Package AutoMapper
\n\n

2. Através do .NET CLI

\n
dotnet add package AutoMapper
\n\n

3. Através da interface do Visual Studio (Manage NuGet Packages)

\n

Abra o projeto -> Clique com o botão direito no projeto -> "Manage NuGet Packages" -> procure por "AutoMapper" -> instale a versão estável mais recente.

\n\n

Para trabalhar com ASP.NET Core, também é recomendável instalar o pacote AutoMapper.Extensions.Microsoft.DependencyInjection, que simplifica a integração com o contêiner DI:

\n
dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection
\n\n

Início rápido: primeiro mapeamento

\n\n

Vamos criar um exemplo simples. Temos a classe UserEntity (do banco de dados) e UserDto (para envio ao cliente).

\n\n
using AutoMapper;\n\n// 1. Classes de origem e destino\npublic class UserEntity\n{\n    public int Id { get; set; }\n    public string FirstName { get; set; }\n    public string LastName { get; set; }\n    public string Email { get; set; }\n}\n\npublic class UserDto\n{\n    public int Id { get; set; }\n    public string FirstName { get; set; }\n    public string LastName { get; set; }\n    public string Email { get; set; }\n}\n\n// 2. Criação da configuração e do Mapper\nvar config = new MapperConfiguration(cfg =>\n{\n    cfg.CreateMap<UserEntity, UserDto>();\n});\n\nvar mapper = config.CreateMapper();\n\n// 3. Utilização\nvar userEntity = new UserEntity\n{\n    Id = 1,\n    FirstName = "Ivan",\n    LastName = "Petrov",\n    Email = "ivan@example.com"\n};\n\nvar userDto = mapper.Map<UserDto>(userEntity);\n\nConsole.WriteLine(userDto.FirstName); // Exibirá: Ivan
\n\n

Neste exemplo, criamos um mapa (Map) entre UserEntity e UserDto. Como os nomes das propriedades coincidem, o AutoMapper as mapeou automaticamente. O método Map<TDestination>(source) realiza o mapeamento e retorna um novo objeto do tipo de destino.

\n\n

Principais métodos e funções do AutoMapper

\n\n

O AutoMapper fornece uma API rica para configurar o mapeamento. Abaixo estão 10 métodos e funções principais que você usará com mais frequência.

\n\n

1. CreateMap<TSource, TDestination>()

\n

O que faz: Cria uma configuração de mapeamento entre dois tipos. Este é o método principal para declarar um mapa.

Recommendations