自动映射器:映射集合和传递参数

时间:2018-11-20 18:39:30

标签: c# automapper

我正在尝试将一个实体映射到另一个(具有一个附加字段的实体)。

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上有一个错误:“对象”不包含“描述”的定义

1 个答案:

答案 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";
        }
    }));
相关问题