Mapster para C# (.NET): guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Mapster para C# (.NET): guía completa con ejemplos prácticos

Mapster es una biblioteca de alto rendimiento para el mapeo de objetos (object-to-object mapping) en el ecosistema .NET. Permite transformar automáticamente objetos de un tipo a otro, eliminando la necesidad de escribir código repetitivo para copiar propiedades. A diferencia de herramientas como AutoMapper, Mapster se enfoca en la velocidad de ejecución y el mínimo consumo de memoria, como lo demuestran numerosos benchmarks.

¿Para qué sirve el mapeo de objetos? En proyectos reales, constantemente necesitamos transformar datos: DTO (Data Transfer Object) a Entity, ViewModel a Model, Model a Response, etc. Copiar manualmente cada campo es tedioso, propenso a errores y dificulta el mantenimiento del código. Mapster resuelve este problema ofreciendo una API simple, flexible y rápida para el mapeo automático.

Mapster genera el código de mapeo en tiempo de compilación (mediante analizadores Roslyn) o utiliza compilación dinámica de expresiones. Esto lo convierte en uno de los mapeadores más rápidos en .NET, superando incluso la copia manual en algunos escenarios. La biblioteca soporta casos complejos: objetos anidados, colecciones, mapeo condicional, ignorar campos, adaptadores para diferentes tipos y mucho más.

Instalación

La instalación de Mapster se realiza a través del Administrador de Paquetes NuGet. Ejecuta uno de los siguientes comandos en la consola del administrador de paquetes:

dotnet add package Mapster

O a través de la Consola del Administrador de Paquetes:

Install-Package Mapster

Para trabajar con ASP.NET Core e inyección de dependencias (DI), se recomienda instalar el paquete adicional:

dotnet add package Mapster.DependencyInjection

Después de la instalación, agrega using Mapster; al inicio de tu archivo.

Inicio rápido

Veamos un ejemplo sencillo: tenemos una clase User (modelo de base de datos) y una clase UserDto (para enviar al cliente).

using Mapster;

// Clase de origen
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public DateTime CreatedAt { get; set; }
}

// Clase de destino
public class UserDto
{
    public int Id { get; set; }
    public string FullName { get; set; }
    public string Email { get; set; }
}

// Ejemplo de uso
public class Program
{
    public static void Main()
    {
        var user = new User
        {
            Id = 1,
            Name = "Juan Pérez",
            Email = "juan@example.com",
            CreatedAt = DateTime.Now
        };

        // Mapeo con Mapster
        var dto = user.Adapt<UserDto>();

        Console.WriteLine($"Id: {dto.Id}, Nombre: {dto.FullName}, Email: {dto.Email}");
        // Salida: Id: 1, Nombre: Juan Pérez, Email: juan@example.com
    }
}

Observa que la propiedad Name se asignó automáticamente a FullName, ya que Mapster por defecto intenta encontrar coincidencias por nombre (sin distinguir mayúsculas/minúsculas). Si UserDto tuviera una propiedad Name, también se asignaría.

Métodos y clases principales

Veamos los métodos clave de Mapster. Para cada uno se incluye la firma, descripción y un ejemplo.

1. Adapt<TDestination>(object source)

Firma: public static TDestination Adapt<TDestination>(this object source)

Descripción: Método de extensión básico para mapear un objeto a otro. Crea una nueva instancia de TDestination y copia los valores de las propiedades desde source.

var user = new User { Id = 1, Name = "Ana" };
var dto = user.Adapt<UserDto>();
Console.WriteLine(dto.FullName); // Salida: Ana

Recommendations