Rôle du Profile : Extraire un grand nombre de règles de mappage dans une classe indépendante, au lieu de tout entasser dans la méthode Main, ce qui facilite la gestion des mappages pour plusieurs entités.
1. Classe Profile personnalisée
Héritez du Profile fourni par AutoMapper, écrivez les relations de mappage dans le constructeur, et vous pouvez écrire plusieurs CreateMap d’un coup.
using AutoMapper;
/// <summary>
/// Classe de configuration de mappage
/// </summary>
public class MappingProfile : Profile
{
public MappingProfile()
{
// Person → People
CreateMap<Person, People>();
// People → Person, mappage bidirectionnel
CreateMap<People, Person>();
}
}
// [Traduction du chinois dans le bloc de code]
// Classe de configuration de mappage
// Person → People
// Mappage bidirectionnel
Langage du code : HTML, XML (xml)
Méthode 1 : Ajouter le Profile lors de l’initialisation
Mapper.Initialize(x => x.AddProfile<MappingProfile>());
Langage du code : JavaScript (javascript)
Méthode 2 : Syntaxe complète, instanciation de l’objet Profile
var mc = new MapperConfigurationExpression();
mc.AddProfile(new MappingProfile());
Mapper.Initialize(mc);
// [Traduction du chinois dans le bloc de code]
// Instanciation de l'objet Profile
Langage du code : JavaScript (javascript)
2. Charger plusieurs Profiles
Lorsque le projet devient complexe, vous répartirez les mappages dans plusieurs classes Profile. Vous pouvez tous les enregistrer en une seule fois :
Mapper.Initialize(x =>
{
x.AddProfile<MappingProfile>();
x.AddProfile<MappingProfile2>();
});
Langage du code : HTML, XML (xml)
Exemple complet de Program
class Program
{
static void Main(string[] args)
{
// ========= Configuration : charger le mappage Profile =========
Mapper.Initialize(x => x.AddProfile<MappingProfile>());
// Objet source, objet cible
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
};
// Mappage direct Person → People
Mapper.Map(p, peo);
// Mappage inverse People → Person
Mapper.Map(peo, p);
Console.WriteLine(peo.Name);
Console.WriteLine(p.Name);
Console.ReadKey();
}
}
// [Traduction du chinois dans le bloc de code]
// Configuration : charger le mappage Profile
// Objet source, objet cible
// Mappage direct Person → People
// Mappage inverse People → Person
Langage du code : JavaScript (javascript)
Configurer le Profile