2016-09-26 67 views
0

是否可以映射對象這樣的東西?將其他屬性傳遞給AutoMapper映射

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方法的當前拉姆達沒有Contex財產。或者,也許有一個更優雅的方式來做到這一點?

在此先感謝!

回答

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) 
0

看起來你使用的是舊版本的AutoMapper。 5.x版本包含一個您可以使用的上下文對象,就像您正在嘗試的那樣。

cfg.CreateMap<Source, Dest>() 
    .ConstructUsing((src, ctxt) => new Dest(src.first, src.second, ctxt.Options.Items["Id"]));