Propósito de Profile: Extraer una gran cantidad de reglas de mapeo en una clase independiente, en lugar de amontonarlas todas en el método Main, lo que facilita gestionar los mapeos de múltiples entidades.
1. Clase Profile personalizada
Hereda del Profile que proporciona AutoMapper, escribe las relaciones de mapeo en el constructor y puedes escribir múltiples CreateMap de una vez.
using AutoMapper;
/// <summary>
/// Clase de configuración de mapeo
/// </summary>
public class MappingProfile : Profile
{
public MappingProfile()
{
// Person → People
CreateMap<Person, People>();
// People → Person, mapeo bidireccional
CreateMap<People, Person>();
}
}
// [Traducción del chino en el bloque de código]
// Clase de configuración de mapeo
// Person → People
// Mapeo bidireccional
Lenguaje del código: HTML, XML (xml)
Método 1: Agregar Profile durante la inicialización
Mapper.Initialize(x => x.AddProfile<MappingProfile>());
Lenguaje del código: JavaScript (javascript)
Método 2: Sintaxis completa, instanciar objeto Profile
var mc = new MapperConfigurationExpression();
mc.AddProfile(new MappingProfile());
Mapper.Initialize(mc);
// [Traducción del chino en el bloque de código]
// Instanciar objeto Profile
Lenguaje del código: JavaScript (javascript)
2. Cargar múltiples Profiles
Cuando el proyecto se vuelve complejo, se dividen los mapeos en varias clases Profile. Puedes registrarlos todos de una vez:
Mapper.Initialize(x =>
{
x.AddProfile<MappingProfile>();
x.AddProfile<MappingProfile2>();
});
Lenguaje del código: HTML, XML (xml)
Ejemplo completo de Program
class Program
{
static void Main(string[] args)
{
// ========= Configuración: cargar mapeo Profile =========
Mapper.Initialize(x => x.AddProfile<MappingProfile>());
// Objeto fuente, objeto destino
Person p = new Person()
{
Age = 12,
Name = "Tom",
Birthday = DateTime.Now,
Sex = true,
Salary = 10000
};
People peo = new People()
{
Age = 36,
Name = "Jack",
Birthday = DateTime.Now,
Sex = true,
Salary = 102000
};
// Mapeo directo Person → People
Mapper.Map(p, peo);
// Mapeo inverso People → Person
Mapper.Map(peo, p);
Console.WriteLine(peo.Name);
Console.WriteLine(p.Name);
Console.ReadKey();
}
}
// [Traducción del chino en el bloque de código]
// Configuración: cargar mapeo Profile
// Objeto fuente, objeto destino
// Mapeo directo Person → People
// Mapeo inverso People → Person
Lenguaje del código: JavaScript (javascript)
Configurar Profile
Previous: Instalación y primer ejemplo