我想使用 AutoMapper 将一个集合映射到另一个集合。我知道约定是为子对象设置映射:
Mapper.CreateMap<User, UserDto>();
然后这工作正常:
Mapper.Map<List<UserDto>>(UserRepo.GetAll());
但无论如何,我仍然想映射列表。例如,我想做这样的事情:
Mapper.CreateMap<List<User>, List<UserDto>>()
.AfterMap((source, destination) =>
{
// some complex/expensive process here on the entire user list
// such as retrieving data from an external database, etc
}
这样我仍然可以使用第一张地图,但也可以对用户列表进行自定义操作。在我的场景中,它在另一个数据中心的外部数据库中查找事件 ID,我想通过仅查找唯一 ID 来优化它,而不是逐个对象进行。
但是,当我尝试将用户列表映射到 UserDto 列表时,映射只返回一个空列表。在函数中放置断点AfterMap
表明该destination
变量包含一个空列表。我怎样才能让 AutoMapper 正确地做到这一点?