2013-02-08 87 views
97

我是Automapper框架的新手。我有一個域類和DTO類,如下所示:如何在屬性名稱不同時指定映射規則

public class Employee 
{ 
    public long Id {get;set;} 
    public string Name {get;set;} 
    public string Phone {get;set;} 
    public string Fax {get;set;} 
    public DateTime DateOfBirth {get;set;} 
} 

public class EmployeeDto 
{ 
    public long Id {get;set;} 
    public string FullName {get;set;} 
    public DateTime DateOfBirth {get;set;} 
} 

注:屬性名稱「名稱」的Employee類是不一樣的,即財產EmployeeDto類的「全名」。

而這裏的映射代碼Employee對象EmployeeDto

Mapper.CreateMap<Employee, EmployeeDto>(); // code line (***) 
EmployeeDto dto = Mapper.Map<Employee, EmployeeDto>(employee); 

我的問題是:如果我要地圖Employee(源類)EmployeeDto(目標類),我怎麼可以指定映射規則?換句話說,我應該如何使用上面的代碼行(***)做更多的事情?

回答

200

沒關係,我自己找到了解決辦法:

Mapper.CreateMap<Employee, EmployeeDto>() 
    .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name)); 
+1

有沒有在全球範圍內指定它的任何類,像前綴/後綴事情的方法嗎?例如,我有一堆來自圖書館的類,每個類都有「本地化」屬性。我想將它們映射到相應的屬性被稱爲「LocalizedName」的類。我唯一的選擇是將ForMember添加到每個映射配置? – NickAb 2016-05-20 14:43:20

+2

Mapper類中沒有CreateMap方法:( – 2016-07-20 08:01:06

+1

@ Navid_pdp11是的,你需要讓靜態類Mapper不是一個實例 – 2016-07-28 11:42:23

相關問題