Je suis un débutant dans le cadre Automapper. J'ai une classe de domaine et une classe DTO comme suit:
public class Employee
{
public long Id {get;set;}
public string Name {get;set;}
public string Phone {get;set;}
public string Fax {get;set;}
public DateTime DateOfBirth {get;set;}
}
public class EmployeeDto
{
public long Id {get;set;}
public string FullName {get;set;}
public DateTime DateOfBirth {get;set;}
}
Remarque: Le nom de la propriété "Nom" de Employee
classe n’est pas identique à celui de la propriété "Nom complet" de EmployeeDto
classe. .
Et voici le code pour mapper l'objet Employee
à EmployeeDto
:
Mapper.CreateMap<Employee, EmployeeDto>(); // code line (***)
EmployeeDto dto = Mapper.Map<Employee, EmployeeDto>(employee);
Ma question est la suivante: si je veux mapper Employee
(classe source) à EmployeeDto
(classe de destination), comment puis-je spécifier la règle de mappage? En d'autres termes, comment dois-je faire plus avec la ligne de code (***) ci-dessus?
Qu'à cela ne tienne, j'ai moi-même trouvé une solution:
Mapper.CreateMap<Employee, EmployeeDto>()
.ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name));
Vraiment vieux fil, mais juste pour incorporer les commentaires ci-dessus dans une approche mise à jour avec Automapper 8.1 + ...
var mapConfig = new MapperConfiguration(
cfg => cfg.CreateMap<Employee, EmployeeDto>()
.ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name))
);
Ensuite, vous construirez le mappeur à l'aide de mapConfig:
var mapper = mapConfig.CreateMapper();