2012-08-12 18 views
1

讓有一個DTO類:AutoMapper地圖對象以任何繼承destionation類型

public class UserDto { 
    public int Id { get;set; } 
} 

而且視圖模型類(基MVC項目庫):

public abstract class UserViewModelBase { 
    public int Id { get;set; } 
} 

現在當我像這樣automapper創建映射:

Mapper.CreateMap<UserDto, UserViewModelBase>(); 

在主要的web mvc項目我有concreate UserViewModelBase的實現,像這樣:

public class UserViewModel: UserViewModelBase { 
} 

現在,當我調用此:

Mapper.Map<UserDto, UserViewModel>() 

它失敗這樣的誤差:

缺少類型映射配置或不支持的映射。

UserDto - > UserViewModel

據我所知,這是引起的我還沒有定義UserDto和UserViewModel之間的直接映射。 我想知道是否有某種方法如何告訴AutoMapper使用此地圖Mapper.CreateMap<UserDto, UserViewModelBase>();它應該接受任何類型作爲從UserViewModelBase繼承的目標類型。

回答

0

似乎沒有人知道如何實現這一點,所以我爲此做了解決方法。

我的解決方法是建立映射(使用Mapper.CreateMap(...))多次每個concreate目標類,如:

在ClassLibrary1的

在第二ClassLibrary2
Mapper.CreateMap<UserDto, UserViewModel1>(); 

Mapper.CreateMap<UserDto, UserViewModel2>(); 

即使UserViewModel1和UserViewModel2源自相同的基類UserViewModelBase

+0

如果有人發現其他原生AutoMapper功能解決方案,我會將該答案標記爲已接受。 – psulek 2012-10-17 13:27:40