我正在尝试将一个实体映射到另一个(具有一个附加字段的实体)。
Group {
int Id;
}
GroupExtended {
int Id;
string Description;
}
所以我在循环中进行映射:
foreach (var group in groups)
{
var result = mapper.Map<Group, GroupExtended>(group,
opt => opt.AfterMap((src, dest) => dest.Description = someValue));
}
是否可以映射整个IEnumerable,并且仍传递值? 我尝试过:
var result = mapper.Map<List<GroupExtended>>(groups,
opt => opt.AfterMap((src, dest) => dest.Description = someValue));
但是dest.Description
上有一个错误:“对象”不包含“描述”的定义
答案 0 :(得分:1)
是的,可以映射整个集合并仍然传递值。正如您对原始帖子的评论所指出的那样,使用custom value resolver可能是首选。如果仍然希望使用AfterMap
,则可以执行以下操作,请记住,在这种情况下,您的源和目标是集合,而不是单个项目:
var result = mapper.Map<List<Group>, List<GroupExtended>>(groups,
opt => opt.AfterMap((src, dest) =>
{
foreach (var i in dest)
{
i.Description = "someValue";
}
}));