Configurar Profile

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

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *