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

将C#的Automapper DataReader映射代码转VB.Net遇重载解析失败求助

Automapper DataTable转DTO的C#转VB.Net问题解决

问题描述

本人VB.Net经验不足,在转换一段使用Automapper和Automapper.Data NuGet包的C#代码(用于实现DataTable到DTO的映射)时遇到困难。自行编写的VB.Net代码出现“Overload resolution failure”重载解析失败警告,寻求正确的代码转换方案。

原C#代码

IMapper DataReaderMapper = new MapperConfiguration(cfg => {
    cfg.AddDataReaderMapping();
    cfg.CreateMap<IDataReader, MyDTO1>();
    cfg.CreateMap<IDataReader, MyDTO2>();
    cfg.CreateMap<IDataReader, MyDTO3>();
}).CreateMapper();

尝试的VB.Net代码

Dim DataReaderMapper As IMapper = New MapperConfiguration(Function(cfg) {cfg.AddDataReaderMapping(), cfg.CreateMap(Of IDataReader, MyDTO1)()}).CreateMapper()

正确的VB.Net代码

Dim DataReaderMapper As IMapper = New MapperConfiguration(Sub(cfg)
                                                             cfg.AddDataReaderMapping()
                                                             cfg.CreateMap(Of IDataReader, MyDTO1)()
                                                             cfg.CreateMap(Of IDataReader, MyDTO2)()
                                                             cfg.CreateMap(Of IDataReader, MyDTO3)()
                                                         End Sub).CreateMapper()

错误原因说明

  1. 委托类型错误:原C#代码里的cfg => {...}是无返回值的Action委托,对应VB.Net里应该用Sub而非Function(Function用于有返回值的委托)。
  2. 多语句写法错误:VB.Net中Lambda多语句不能用{...}数组初始化语法,需要将语句放在Sub和End Sub包裹的代码块中,每行一个操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:55:14