在AutoMapper问题中使用string.Split() [英] Using string.Split() in AutoMapper issue

查看:7
本文介绍了在AutoMapper问题中使用string.Split()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个ASP.Net核心应用程序。我只是尝试将AutoMapper配置为按照以下配置将逗号分隔的字符串转换为字符串列表:

configuration.CreateMap<Job, JobDto>()
             .ForMember(dto => dto.Keywords, options => options.MapFrom(entity => entity.Keywords.Split(',').ToList()))

由于某种原因,它无法编译,并给出以下错误:

表达式树不能包含使用 可选参数

我不明白为什么会出现此错误。我非常肯定,我以前在其他项目中也这样做过,没有任何这样的错误。

推荐答案

这完全正确。

引发错误是因为要创建的表达式树将包含一些更复杂的逻辑,如.Split(',').ToList(),它不是可访问的属性或方法,仅支持顶级反射的对象属性和方法(如类MemberInfo)。

表达式树不支持属性链接、深度调用(.obj1Property.obj2Property)和扩展方法,如此.ToList()调用。

我的解决方案如下:

// Execute a custom function to the source and/or destination types after member mapping
configuration.CreateMap<Job, JobDto>()
  .AfterMap((dto,jobDto)=>jobDto.Keywords = dto.Keywords.Split(',').ToList());

这篇关于在AutoMapper问题中使用string.Split()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆