是否可以映射这样的对象?
Mapper.CreateMap<Source, Dest>()
.ConstructUsing(s => new Dest(s.first, s.second, s.Context.Options.Items["Id"]));
Mapper.Map<Source, Dest>(src, opt => opt.Items["Id"] = 5);
不幸的是,Contex
方法的当前lambda中没有ConstructUsing
属性。或者也许有更优雅的方式来做它?
提前致谢!
答案 0 :(得分:0)
您可以使用:
cfg.CreateMap<Source, Dest>().ForMember(dest => dest.MyProperty, opt => opt.MapFrom(src => src.MySourceProperty));
或尝试这一点,如果它更符合您的需求:
cfg.CreateMap<Source, Dest>().ConvertUsing(MappingFunction);
private Dest MappingFunction(Source source)
{
// mapping stuff
}
您也可以使用:
cfg.CreateMap<Source, Dest>().BeforeMap(MappingFunction)
或者:
cfg.CreateMap<Source, Dest>().AfterMap(MappingFunction)
答案 1 :(得分:0)
看起来您正在使用较旧版本的AutoMapper。 5.x版本包含一个上下文对象,您可以像尝试一样使用它。
cfg.CreateMap<Source, Dest>()
.ConstructUsing((src, ctxt) => new Dest(src.first, src.second, ctxt.Options.Items["Id"]));