我有一些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;}
}
编辑
我知道全局配置"已识别前缀"。我宁愿为特定地图设置强制性前缀(不是"已识别的")。
请查看我对flllllling问题的回答:Automapper不识别特定于个人资料的前缀
希望这会有所帮助!