如何在Automapper中映射嵌套的子对象属性

ame*_*els 7 c# automapper

我有当前的地图:

CreateMap<Article, ArticleModel>()
    .ForMember(dest => dest.BaseContentItem, opts => opts.MapFrom(src => src.BaseContentItem))
    .ForMember(dest => dest.BaseContentItem.TopicTag, opts => opts.MapFrom(src => src.BaseContentItem.TopicTag))
    .ForMember(dest => dest.MainImage, opts => opts.MapFrom(src => src.MainImage))
    .ReverseMap();
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

System.ArgumentException:'Expression'dest => dest.BaseContentItem.TopicTag'必须解析为顶级成员而不是任何子对象的属性.请改用子类型或AfterMap选项上的自定义解析器.

我该如何映射?

小智 24

这应该工作.用ForPath而不是ForMember

CreateMap<Article, ArticleModel>()
    .ForMember(dest => dest.BaseContentItem, opts => opts.MapFrom(src => src.BaseContentItem))
    .ForPath(dest => dest.BaseContentItem.TopicTag, opts => opts.MapFrom(src => src.BaseContentItem.TopicTag))
    .ForMember(dest => dest.MainImage, opts => opts.MapFrom(src => src.MainImage))
    .ReverseMap();
Run Code Online (Sandbox Code Playgroud)