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

使用AutoMapper将byte[]转ByteString时遇InvalidCastException异常

解决AutoMapper中byte[]转Google.Protobuf.ByteString的InvalidCastException异常

异常的核心原因是AutoMapper默认会将byte[]尝试转换为List<byte>,而非直接执行你指定的ByteString.CopyFrom逻辑,导致类型不匹配抛出转换异常。以下是两种可行的解决方式:

方式一:针对单个映射属性指定转换逻辑

修改AutoMapper配置,使用ConvertUsing替代MapFrom,明确强制使用自定义转换逻辑,避免AutoMapper的默认类型转换干扰:

CreateMap<Model.Models.ProgressNotesModel.LoadInkResponse, LoadInkResponse>()
    .ForMember(dest => dest.Strokes, opt => opt.ConvertUsing(src => ByteString.CopyFrom(src.Strokes)));

方式二:全局类型转换器(推荐)

创建全局的byte[]到ByteString类型转换器,这样所有涉及这两种类型的映射都会自动生效,无需逐个属性配置:

// 先注册全局类型转换规则
CreateMap<byte[], ByteString>().ConvertUsing(src => ByteString.CopyFrom(src));

// 原映射配置可简化,无需单独指定Strokes字段
CreateMap<Model.Models.ProgressNotesModel.LoadInkResponse, LoadInkResponse>();

额外检查点:确认从数据库获取的墨迹数据确实是byte[]类型,而非List<byte>,避免源类型本身就不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 14:12:06