让我们有一个DTO课程:
public class UserDto {
public int Id { get;set; }
}
viewmodel类(基本mvc项目库):
public abstract class UserViewModelBase {
public int Id { get;set; }
}
现在当我像这样为automapper创建映射时:
Mapper.CreateMap<UserDto, UserViewModelBase>();
在主web mvc项目中我已经混合了UserViewModelBase的实现,如下所示:
public class UserViewModel: UserViewModelBase {
}
现在我打电话给你:
Mapper.Map<UserDto, UserViewModel>()
失败了,出现了这样的错误:
缺少类型地图配置或不支持的映射。
UserDto - &gt; UserViewModel
据我所知,这是因为我没有定义UserDto和UserViewModel之间的直接映射。
我想知道是否有一些方法告诉AutoMapper使用此映射Mapper.CreateMap<UserDto, UserViewModelBase>();
它应该接受任何类型作为继承自UserViewModelBase
的目标类型。
答案 0 :(得分:0)
似乎没有人知道如何实现这一点,所以我为此做了解决方法。
我的解决方法是使用concreate目标类多次构建映射(使用Mapper.CreateMap(...)
),如:
:
Mapper.CreateMap<UserDto, UserViewModel1>();
第二个ClassLibrary2中的:
Mapper.CreateMap<UserDto, UserViewModel2>();
即使UserViewModel1和UserViewModel2派生自相同的基类UserViewModelBase
。