【发布时间】:2016-07-22 14:05:21
【问题描述】:
首先,对不起我的英语不好!我是法国人。
我试图在谷歌上找到,但没有任何结果,这是我的自动映射器配置:
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 失败......这是错误消息:
缺少类型映射配置或不支持的映射。
映射类型: 应用程序 -> 应用程序合同 UGO.Distribution.Domain.Application -> UGO.Distribution.Shared.Contracts.ApplicationContract
目标路径: 列表`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 中被弃用了!!
这个问题有什么解释或者更好的解决方案吗?
【问题讨论】:
-
你确定不是
Group而不是Groupe? -
@NickBull 他在问题“我是法国人”的开头说 :) :)
-
@HakamFostok 不不,我不会敲那个!我的意思是这个类实际上命名为
Group而不是Groupe,导致类型错误。 -
什么版本的 AutoMapper?
-
它是 GroupeApplication 而不是 Group... 就像 Hakam Fostok 说的,我是法国人 ;) 我使用 automapper 4.2.1.0
标签: c# automapper