我需要調用一個函數,它將一組驅動器號作爲其參數之一。我從創建對象的開發團隊接收到的示例使用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方法。 –