Automapper.mapper.map不起作用,但mapper.dynamicmap工作

时间:2016-07-22 14:05:21

标签: c# 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在尝试映射我的应用程序集合时失败了...这是错误消息:

  

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

     

映射类型:   申请 - &gt; ApplicationContract   UGO.Distribution.Domain.Application - &gt; 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中不推荐使用这种方法!!

这个问题有没有解释或更好的解决方案?

1 个答案:

答案 0 :(得分:0)

不要放ForMember(...),而是尝试:

ForMember<ObjectThatYouWantMap>(...);