Zweck von Profile: Eine große Anzahl von Mapping-Regeln in eine eigenständige Klasse auslagern, statt alles in der Main-Methode zu sammeln, um das Verwalten von Mappings für mehrere Entitäten zu erleichtern.
1. Benutzerdefinierte Profile-Klasse
Erben Sie von AutoMappers Profile, schreiben Sie die Mapping-Beziehungen in den Konstruktor und können Sie mehrere CreateMap-Aufrufe auf einmal notieren.
using AutoMapper;
/// <summary>
/// Mapping-Konfigurationsklasse
/// </summary>
public class MappingProfile : Profile
{
public MappingProfile()
{
// Person → People
CreateMap<Person, People>();
// People → Person, bidirektionales Mapping
CreateMap<People, Person>();
}
}
// [Übersetzung des Chinesischen im Codeblock]
// Mapping-Konfigurationsklasse
// Person → People
// Bidirektionales Mapping
Code-Sprache: HTML, XML (xml)
Methode 1: Profile bei der Initialisierung hinzufügen
Mapper.Initialize(x => x.AddProfile<MappingProfile>());
Code-Sprache: JavaScript (javascript)
Methode 2: Vollständige Schreibweise, Profile-Objekt instanziieren
var mc = new MapperConfigurationExpression();
mc.AddProfile(new MappingProfile());
Mapper.Initialize(mc);
// [Übersetzung des Chinesischen im Codeblock]
// Profile-Objekt instanziieren
Code-Sprache: JavaScript (javascript)
2. Mehrere Profile laden
Wenn das Projekt komplexer wird, werden mehrere Profile-Klassen aufgeteilt. Sie können alle auf einmal registrieren:
Mapper.Initialize(x =>
{
x.AddProfile<MappingProfile>();
x.AddProfile<MappingProfile2>();
});
Code-Sprache: HTML, XML (xml)
Vollständiges Program-Beispiel
class Program
{
static void Main(string[] args)
{
// ========= Konfiguration: Profile-Mapping laden =========
Mapper.Initialize(x => x.AddProfile<MappingProfile>());
// Quellobjekt, Zielobjekt
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
};
// Vorwärts-Mapping Person → People
Mapper.Map(p, peo);
// Rückwärts-Mapping People → Person
Mapper.Map(peo, p);
Console.WriteLine(peo.Name);
Console.WriteLine(p.Name);
Console.ReadKey();
}
}
// [Übersetzung des Chinesischen im Codeblock]
// Konfiguration: Profile-Mapping laden
// Quellobjekt, Zielobjekt
// Vorwärts-Mapping Person → People
// Rückwärts-Mapping People → Person
Code-Sprache: JavaScript (javascript)
Profile konfigurieren