我需要调用一个函数,它将一组驱动器号作为其参数之一。我从创建对象的开发团队接收到的示例使用VBScript和看起来像这样:使用VB.NET调用COM接口
Array("C:","D:")
这并不在VB.NET工作,所以我尝试了下面的代码。注:驱动器被传递给我一个逗号分隔字符串:
Dim drives As String = "C,D"
Dim volumeList As String() = drives.Split(","c)
For i As Integer = 0 To volumeList.Length - 1
volumeList(i) &= ":"
Next
然后我尝试volumeList传递给有问题的功能,我得到一个无效的参数异常。有没有其他方法可以尝试创建/传递此数组,以便它像VBScript示例一样工作?我告诉开发者我在做什么,他说:“呃...应该工作。”所以我想弄明白,而不必强迫这个人来帮助我。
编辑:COM服务器期望类型变体(VB6)的数组。那就是问题所在。可悲的是,我在VB.NET尝试失败。
右键单击对有问题的方法的调用,然后单击转到定义。将方法声明添加到您的问题以获取更多上下文。此外,如果可能,请查看您是否可以从本机开发人员处获得IDL声明,并在问题中发布该声明。 –
@ BrentM.Spell - 我无法进入方法定义,因为我的项目中没有参考。我只是通过他们的开发团队发送给我的例子。 –
您可以尝试从数组中构建一个 System.Runtime.InteropServices.VariantWrapper 实例,然后将其传递给COM方法。 –