2014-01-30 92 views
3

由於基於約定的自動映射,我有一些從域對象映射的DTO,即地址字段被平鋪到DTO。Automapper不帶前綴

這適用於域 - > 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;} 
} 

編輯

我知道全局配置的 「公認的前綴」。我寧願爲特定的地圖設置強制性前綴(不是「公認的」之一)。

回答