Finalidade do Profile: Extrair um grande número de regras de mapeamento para uma classe independente, em vez de amontoá-las todas no método Main, facilitando o gerenciamento de mapeamentos para múltiplas entidades.
1. Classe Profile personalizada
Herde o Profile fornecido pelo AutoMapper, escreva as relações de mapeamento no construtor e você pode escrever várias instruções CreateMap de uma vez.
using AutoMapper;
/// <summary>
/// Classe de configuração de mapeamento
/// </summary>
public class MappingProfile : Profile
{
public MappingProfile()
{
// Person → People
CreateMap<Person, People>();
// People → Person, mapeamento bidirecional
CreateMap<People, Person>();
}
}
// [Tradução do chinês no bloco de código]
// Classe de configuração de mapeamento
// Person → People
// Mapeamento bidirecional
Code language: HTML, XML (xml)
Método 1: Adicionar Profile durante a inicialização
Mapper.Initialize(x => x.AddProfile<MappingProfile>());
Code language: JavaScript (javascript)
Método 2: Sintaxe completa, instanciar objeto Profile
var mc = new MapperConfigurationExpression();
mc.AddProfile(new MappingProfile());
Mapper.Initialize(mc);
// [Tradução do chinês no bloco de código]
// Instanciar objeto Profile
Code language: JavaScript (javascript)
2. Carregar múltiplos Profiles
Quando o projeto fica complexo, você divide os mapeamentos em várias classes Profile. Pode registrar todos de uma vez:
Mapper.Initialize(x =>
{
x.AddProfile<MappingProfile>();
x.AddProfile<MappingProfile2>();
});
Code language: HTML, XML (xml)
Exemplo completo de Program
class Program
{
static void Main(string[] args)
{
// ========= Configuração: carregar mapeamento Profile =========
Mapper.Initialize(x => x.AddProfile<MappingProfile>());
// Objeto de origem, objeto de 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
};
// Mapeamento direto Person → People
Mapper.Map(p, peo);
// Mapeamento reverso People → Person
Mapper.Map(peo, p);
Console.WriteLine(peo.Name);
Console.WriteLine(p.Name);
Console.ReadKey();
}
}
// [Tradução do chinês no bloco de código]
// Configuração: carregar mapeamento Profile
// Objeto de origem, objeto de destino
// Mapeamento direto Person → People
// Mapeamento reverso People → Person
Code language: JavaScript (javascript)
Configurar Profile