将其他属性传递给AutoMapper Mappings
本文关键字:AutoMapper Mappings 其他 属性 | 更新日期: 2023-09-27 18:09:02
是否有可能像这样映射对象?
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);
遗憾的是,在ConstructUsing
方法的当前lambda中没有Contex
属性。或者有更优雅的方法?
提前感谢!
您可以使用:
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)
看起来您使用的是旧版本的AutoMapper。5。X版本包含一个上下文对象,你可以像你想做的那样使用。
cfg.CreateMap<Source, Dest>()
.ConstructUsing((src, ctxt) => new Dest(src.first, src.second, ctxt.Options.Items["Id"]));