2016-07-22 159 views
0

首先,抱歉我的英文不好!我是法國人。Automapper.mapper.map不起作用,但是mapper.dynamicmap工作

我試圖找到谷歌,但沒有任何結果的話,這是我的automapper配置:

public void CreateMap(IMapperConfiguration cfg) 
    { 
     cfg.CreateMap<GroupeApplication, GroupeApplicationContract>(); 
     cfg.CreateMap<Application, ApplicationContract>() 
      .ForMember(d => d.GroupeApplicationId, o => o.MapFrom(s => s.GroupeApplication != null ? s.GroupeApplication.Id : Guid.Empty)); 

     cfg.CreateMap<Application, ApplicationWithAscendantContract>() 
      .ForMember(d => d.GroupeApplication, o => o.MapFrom(s => Mapper.Map<GroupeApplicationContract>(s.GroupeApplication))); 
     cfg.CreateMap<GroupeApplication, GroupeApplicationWithDescendantContract>() 
      .ForMember(d => d.Applications, o => o.MapFrom(s => Mapper.Map<List<ApplicationContract>>(s.Applications))); 

     Mapper.AssertConfigurationIsValid(); 
    } 

事實上,groupeapplication具有應用的列表,Mapper.Map失敗時,它嘗試映射我的應用程序收集...這是錯誤消息:

缺少類型映射配置或不支持的映射。

映射類型: 應用 - > ApplicationContract UGO.Distribution.Domain.Application - > UGO.Distribution.Shared.Contracts.ApplicationContract

目標路徑: List`1 [0]

源值: UGO.Distribution.Domain.Application

如果我這個它的工作原理替換最後一個配置(我用Mapper.DynamicMap更換Mapper.Map):

cfg.CreateMap<GroupeApplication, GroupeApplicationWithDescendantContract>() 
      .ForMember(d => d.Applications, o => o.MapFrom(s => Mapper.DynamicMap<List<ApplicationContract>>(s.Applications))); 

我可以滿意,但那不適合我是這個方法在automapper 4.0.3中被棄用!

這個問題有沒有解釋或更好的解決方案?

+0

你確定它不是'Group'代替'Groupe'? –

+0

@NickBull他說,在開始的問題「我是法國人」:) :) –

+0

@HakamFostok不,我不敲門!我的意思是這個類實際上命名爲'Group'而不是'Groupe',導致Type錯誤。 –

回答

0

而不是把ForMember(...)的,請嘗試:

ForMember<ObjectThatYouWantMap>(...); 
相關問題