You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoMapper中List<string>转字符串失效,为何输出类型全名?

问题分析与解决

你的问题出在AutoMapper的ConvertUsing泛型参数使用错误,导致自定义转换器未被正确触发,AutoMapper默认执行了List<string>的ToString()方法,因此得到了System.Collections.Generic.List1[System.String]`这个非预期结果。

错误原因

你在映射配置中错误地给ConvertUsing指定了<List<string>>泛型参数:

CreateMap<Model, Entity>()
    .ForMember(dest => dest.Items,
               opt => opt.ConvertUsing<List<string>>(new ListToStringValueConverter()));

此处的泛型参数要么需要指定转换器的源类型+目标类型,要么直接省略泛型参数、传入转换器实例即可,单独指定源类型会导致AutoMapper无法识别正确的转换逻辑。

修复方案

以下两种写法都可以解决问题:

写法1:省略泛型参数,直接传入转换器实例

CreateMap<Model, Entity>()
    .ForMember(dest => dest.Items,
               opt => opt.ConvertUsing(new ListToStringValueConverter()));

写法2:指定转换器的完整泛型类型(源类型List<string>,目标类型string)

CreateMap<Model, Entity>()
    .ForMember(dest => dest.Items,
               opt => opt.ConvertUsing<List<string>, string>(new ListToStringValueConverter()));

验证效果

修改配置后,执行entity = _mapper.Map<Entity>(model);时,若Model的Items为["1","2"],Entity的Items将正确转换为"1,2"。

内容的提问来源于stack exchange,提问作者Harobed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:58:13