DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

Mapeamento Rápido e Eficiente de Objetos com Mapster

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
Enter fullscreen mode Exit fullscreen mode

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"));
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

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

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more