AutoMapper如何映射自定义值给ForMember方法

3

我正在使用AutoMapper 8.1.1

如何为目标成员赋值,但不是从源头赋值。

我有这个代码:

    public IEnumerable<PartsTreeVM> GetMainPartsCategories(int type)
    {
        var model = _db.GetALLPartCategoriesTreeWithImages(type, 25);
        var mapper = new MapperConfiguration(cfg => cfg.CreateMap<GetALLPartCategoriesTreeWithImages_Result, PartsTreeVM>()
                .ForMember(dest => dest.VehicleType, opt => opt.MapFrom(type))
            )
            .CreateMapper();
        var result = mapper.Map<List<PartsTreeVM>>(model);

        return result;
    }

我希望所有dest.VehicleType成员都被赋予int类型参数。
2个回答

3
如何为目标成员指定值但不从源中获取。
您可以使用AfterMap来确保目标成员字段存在。
.ForMember(...)
.ForMember(...)
.AfterMap((source, destination) => { /*do whatever you like with destination :-) */ });

如果是静态数据的话:

.ForMember(dest => dest.VehicleType, c => c.MapFrom((s => type));

3
你可以尝试这个方法:
var model = _db.GetALLPartCategoriesTreeWithImages(type, 25);
        var mapper = new MapperConfiguration(cfg => cfg.CreateMap<GetALLPartCategoriesTreeWithImages_Result, PartsTreeVM>()
                .ForMember(dest => dest.VehicleType, opt => opt.MapFrom(s => type))
            )
            .CreateMapper();

或者您可以使用AfterMap作为示例,您可以尝试这样做:

var model = _db.GetALLPartCategoriesTreeWithImages(type, 25);
        var mapper = new MapperConfiguration(cfg => cfg.CreateMap<GetALLPartCategoriesTreeWithImages_Result, PartsTreeVM>()
                .AfterMap((s, d) => {
                    d.VehicleType = type;
                }) 
            )
            .CreateMapper();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接