1

让我们有一个 DTO 类:

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

和 viewmodel 类(基础 mvc 项目库):

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

现在当我像这样为自动映射器创建映射时:

Mapper.CreateMap<UserDto, UserViewModelBase>();

在主 web mvc 项目中,我创建了 UserViewModelBase 的实现,如下所示:

public class UserViewModel: UserViewModelBase {
}

现在当我打电话给这个时:

Mapper.Map<UserDto, UserViewModel>()

它失败并出现这样的错误:

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

UserDto -> UserViewModel

据我了解,这是因为我没有定义 UserDto 和 UserViewModel 之间的直接映射。我想知道是否有某种方法可以告诉 AutoMapper 使用此地图Mapper.CreateMap<UserDto, UserViewModelBase>();它应该接受任何类型作为继承自UserViewModelBase.

4

1 回答 1

0

似乎没有人知道如何实现这一点,所以我为此制定了解决方法。

Mapper.CreateMap(...)我的解决方法是使用concreate 目标类多次构建映射(使用),例如:

在 ClassLibrary1 中:

Mapper.CreateMap<UserDto, UserViewModel1>();

在第二个 ClassLibrary2 中:

Mapper.CreateMap<UserDto, UserViewModel2>();

即使 UserViewModel1 和 UserViewModel2 派生自同一个基类UserViewModelBase

于 2012-10-17T13:26:22.720 回答