Я пытаюсь создать сопоставление наших моделей сущностей с Dto, но каждый раз терплю неудачу, пытаясь создать сопоставление.
У меня есть два класса домена. Это упрощение нашей модели (например, Device
имеет гораздо больше свойств, которые представляют кучу разных вещей):
class Device
{
public int Name {get; set;}
}
class DeviceAccessToken
{
public Device Device {get; set;}
public string Key {get; set;}
public string Secret {get; set;}
}
Затем я хочу сопоставить экземпляры DeviceAccessToken
с этим экземпляром DeviceDto
(тоже упрощенно, в нем есть большинство полей, присутствующих в исходной модели Device
):
class DeviceDto
{
public int Name {get; set;}
public string Key {get; set;}
public string Secret {get; set;}
}
Есть ли способ создать это сопоставление без явного указания всех полей модели предметной области Device
в сопоставлении?
Это то, что я хочу, представленное профилем AutoMapper:
class DeviceMappingProfile : Profile
{
protected override void Configure()
{
this.CreateMap<DeviceAccessToken, DeviceDto>();
this.CreateMap<Device, DeviceDto>()
.ForMember(dest => dest.Key, opt => opt.Ignore())
.ForMember(dest => dest.Secret, opt => opt.Ignore());
}
}
Вызов .ForAllMembers
был неудачной попыткой заставить это работать, он не должен работать так, как я предполагал.
Я понимаю, что мог бы сделать это, указав каждое свойство Device
в сопоставлении DeviceAccessToken->DeviceDto
, но это было бы кошмаром и очень избыточным, поскольку имена одинаковы.