2015-08-28 58 views
0

使用AfterMap時有沒有辦法在AutoMapper中獲取當前的映射上下文?在AfterMap中不使用Automapper的全局映射變量

public class DefaultMappingProfile : Profile 
{ 
    protected override void Configure() 
    { 
     this.CreateMap<SomeList, List<SpecialItem>>() 
      .AfterMap((src, dst) => dst.AddRange(
       src.elem.Select(Mapper.Map<SpecialItem>))); 

我試圖用.ConstructUsing(context => {})但是這給了我不一樣的結果使用AfterMap時爲(!?)。但我不想在這裏訪問全局變量Mapper。有沒有辦法在這裏訪問全局變量?

回答

2

你可以作爲替代使用ConvertUsing<TSource, TDestination>如:

CreateMap<data.BillCycle, domain.BillCycle>().ConvertUsing<BillCycleConverter>();

的類將實現ITypeConverter<TSource, TDestination>並允許您訪問映射器:

public class BillCycleConverter : ITypeConverter<data.BillCycle, domain.BillCycle> 
{ 
    public domain.BillCycle Convert(ResolutionContext context) 
    { 
     context.Engine.Map<X, Y>... 
    } 
} 

Custom Type Converters