Mapster é uma biblioteca de mapeamento de objetos em .NET que oferece alta performance e flexibilidade, similar ao AutoMapper, mas com menor overhead e maior controle. Ele permite a conversão rápida entre diferentes tipos de objetos, útil em cenários onde você precisa mapear classes de entidades para DTOs (Data Transfer Objects) ou vice-versa. O Mapster é leve e fácil de usar, suportando mapeamentos simples, complexos e projeções personalizadas. Neste exemplo, vamos configurar o Mapster para mapear dados de uma entidade para um DTO.
Bibliotecas:
Para usar a biblioteca Mapster, instale o seguinte pacote NuGet no seu projeto:
Install-Package Mapster
Código de Exemplo:
using Mapster;
using System;
namespace MapsterExemplo
{
class Program
{
static void Main(string[] args)
{
// Criando uma instância da entidade Produto
var produto = new Produto
{
Id = 1,
Nome = "Notebook",
Preco = 3500.99M
};
// Configurando o Mapster
MapsterConfig.ConfigurarMapeamentos();
// Mapeando para o DTO ProdutoDTO usando Mapster
var produtoDto = produto.Adapt<ProdutoDTO>();
// Exibindo os dados mapeados no console
Console.WriteLine($"ProdutoDTO: Id={produtoDto.Id}, Nome={produtoDto.Nome}, Preço={produtoDto.PrecoFormatado}");
}
}
// Classe de entidade Produto
public class Produto
{
public int Id { get; set; }
public string Nome { get; set; }
public decimal Preco { get; set; }
}
// Classe de DTO ProdutoDTO
public class ProdutoDTO
{
public int Id { get; set; }
public string Nome { get; set; }
public string PrecoFormatado { get; set; }
}
// Configurando o mapeamento para formatar o preço
public class MapsterConfig
{
public static void ConfigurarMapeamentos()
{
TypeAdapterConfig<Produto, ProdutoDTO>.NewConfig()
.Map(dest => dest.PrecoFormatado, src => src.Preco.ToString("C2"));
}
}
}
Explicação do Código:
Neste exemplo, criamos uma classe de entidade Produto e uma classe DTO ProdutoDTO. O Mapster é utilizado para mapear automaticamente os dados de Produto para ProdutoDTO. No mapeamento, a propriedade PrecoFormatado é configurada para exibir o preço no formato de moeda (C2). O método Adapt do Mapster é usado para realizar o mapeamento de forma simples e direta. O resultado é exibido no console com os dados formatados.
Conclusão:
O Mapster oferece uma solução eficiente e flexível para o mapeamento de objetos em .NET, sendo uma alternativa de alto desempenho ao AutoMapper. Sua configuração é simples, mas permite personalizações poderosas, tornando-o ideal para converter classes de domínio em DTOs e vice-versa.
Código fonte: GitHub