Зависит от того, как выглядит CustomerDetailsViewModel
. Например, если ваш класс Address
выглядит примерно так:
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
и CustomerDetailsViewModel
содержит свойства, следующие этому соглашению:
Когда вы конфигурируете пару типа источник / назначение в AutoMapper,
Конфигуратор пытается сопоставить свойства и методы источника
введите свойства типа назначения. Если для какой-либо собственности на
тип назначения: свойство, метод или метод с префиксом «Get»
не существует в типе источника, AutoMapper разделяет место назначения
имя члена в отдельные слова (согласно соглашениям PascalCase).
(Источник: Уплощение )
Тогда, если CustomerDetailsViewModel
имеет свойства:
public string AddressStreet { get; set; }
public string AddressCity { get; set; }
Будет работать только одно отображение от Customer
до CustomerDetailsViewModel
. Для участников, которые не соответствуют этому соглашению, вы можете использовать ForMember
.
Вы также всегда можете использовать ForMember
для каждого свойства адреса:
Mapper.CreateMap<DataModels.Customer, CustomerDetailsViewModel>()
.ForMember(dest => dest.Street, opt => opt.MapFrom(src => src.Address.Street));
/* etc, for other address properties */
Лично я бы не слишком беспокоился о том, чтобы позвонить .Map
дважды. По крайней мере, так ясно, что сопоставляются свойства Address
и Customer
.