Ho il caso in cui voglio mappare un'entità a un modello di vista e viceversa. Devo specificare il mapping esplicitamente con ForMember() perché le loro proprietà non condividono gli stessi nomi identici. Ecco un breve esempio di come le mie classi assomigliano:Automapper: mappatura bidirezionale con ReverseMap() e ForMember()
public class PartTwo {
public int Integer { get; set; }
}
public class PartTwoViewModel {
public int PartInteger { get; set; }
}
e voglio usarli in questo modo:
Mapper.CreateMap<PartTwo, PartTwoViewModel>()
.ForMember(dst => dst.PartInteger, opt => opt.MapFrom(src => src.Integer))
.ReverseMap();
var partTwoViewModel = new PartTwoViewModel() { PartInteger = 42 };
var partTwo = Mapper.Map<PartTwoViewModel, PartTwo>(partTwoViewModel);
Assert.AreEqual(partTwoViewModel.PartInteger, partTwo.Integer);
Ma non corrisponde alla PartInteger proprietà Integer. (L'intero è 0.)
C'è un modo per farlo funzionare? (Quando le proprietà di entrambe le classi hanno lo stesso nome funziona.) Devo impostare qualche tipo di opzione nel metodo ForMember()?
Sì, questo funziona. Speravo che non avrei dovuto definire la mappatura inversa, perché ho molte proprietà che mappo tramite ForMember(). – toni
Ecco l'esempio: https://dotnetfiddle.net/0x8csL – Sergey