我有一些DTO,它们是通过基于约定的自动映射从领域对象映射而来的,即地址字段被展平到DTO中。
这对于从领域转换为DTO非常有效,但是反过来,我必须手动“取消展平”地址。
我想知道是否有可能“前缀”映射配置,这样我就可以做类似以下的事情:
Mapper.CreateMap<PersonDTO, Address>().WithPrefix("Address");
...
Mapper.CreateMap<PersonDTO, Person>()
.ForMember(d => d.Address, opt => opt.MapFrom(src => Mapper.Map<Address>(src) ))
否则我必须手动映射每个地址字段,这对于更复杂的对象来说就成为了问题。
我的领域对象和数据传输对象(DTO)。
class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
public Address Address {get;set;}
}
class Address
{
public string Street {get;set;}
public string PostCode {get;set;}
}
还有以下 DTO:
class PersonDTO
{
public string FirstName {get;set;}
public string LastName {get;set;}
public string AddressStreet {get;set;}
public string AddressPostCode {get;set;}
}
编辑
我知道全局配置中有“识别前缀”的设置。我更想为特定的地图设置强制前缀(而不是“识别出的前缀之一”)。