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

如何从C#代码向函数传递Microsoft.VisualBasic.Collection类型参数?

解决C#调用需要Microsoft.VisualBasic.Collection参数的DLL函数问题

你的两个错误其实是连锁的,先搞定引用问题,再处理参数类型匹配就没问题了:

第一步:添加Microsoft.VisualBasic程序集引用

你看到的CS0012是核心问题——编译器找不到Microsoft.VisualBasic.Collection类型,因为项目没引用对应的程序集,分两种场景处理:

  • .NET Framework项目:
    右键项目 → 选择「添加」→「引用」→ 切换到「程序集」标签页 → 找到并勾选Microsoft.VisualBasic → 点击「确定」。
  • .NET Core/.NET 5+项目:
    打开NuGet包管理器(右键项目→「管理NuGet程序包」),搜索Microsoft.VisualBasic并安装该包。

第二步:在C#中创建Microsoft.VisualBasic.Collection实例

CS1502错误是因为ArrayList/List<T>和Microsoft.VisualBasic.Collection是完全独立的类型,没有隐式转换关系,必须创建要求的集合类型:

  1. 在代码顶部添加using指令:
    using Microsoft.VisualBasic;
    
  2. 实例化Collection并按需填充元素(VB的Collection支持混合类型元素,和它的特性一致):
    // 创建第一个Collection参数
    var firstCollection = new Collection();
    firstCollection.Add("示例字符串");
    firstCollection.Add(456);
    
    // 创建第二个Collection参数
    var secondCollection = new Collection();
    // 添加你业务需要的元素
    
  3. 把这两个Collection实例传入BuildReport方法,参数类型就能匹配了。

为什么ArrayList/List不行?

虽然它们都是集合容器,但Microsoft.VisualBasic.Collection是VB语言特有的类型,它自带了按索引或键访问元素的Item方法、支持带键的Add操作等独特特性,和.NET通用的ArrayList/List<T>没有继承或转换关系,所以必须使用DLL要求的具体类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:22:56