如何从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是完全独立的类型,没有隐式转换关系,必须创建要求的集合类型:
- 在代码顶部添加using指令:
using Microsoft.VisualBasic; - 实例化Collection并按需填充元素(VB的Collection支持混合类型元素,和它的特性一致):
// 创建第一个Collection参数 var firstCollection = new Collection(); firstCollection.Add("示例字符串"); firstCollection.Add(456); // 创建第二个Collection参数 var secondCollection = new Collection(); // 添加你业务需要的元素 - 把这两个Collection实例传入
BuildReport方法,参数类型就能匹配了。
为什么ArrayList/List不行?
虽然它们都是集合容器,但Microsoft.VisualBasic.Collection是VB语言特有的类型,它自带了按索引或键访问元素的Item方法、支持带键的Add操作等独特特性,和.NET通用的ArrayList/List<T>没有继承或转换关系,所以必须使用DLL要求的具体类型。
内容的提问来源于stack exchange,提问作者Arraylist
相关产品推荐
相关产品推荐

