我需要使用interop从VB6中返回一个初始化对象的数组到C#。我的VB函数如下:
现在,当我从C#中传入数组后调用此函数:
Public Function CreateMyObjArray(ByVal MaxCount As Integer) As MyObj()
Dim i As Integer
Dim temparray() As MyObj
ReDim temparray(MaxCount) As MyObj
For i = 0 To MaxCount
Set temparray(i) = New MyObj
Next i
CreateMyObjArray = temparray
End Function
现在,当我从C#中传入数组后调用此函数:
Array InData = m_MyObjGenerator.CreateMyOjbArray(5);
我遇到了一个系统参数异常错误,错误信息为
"Exception of type 'System.ArgumentException' was thrown.\r\nParameter name: typeName@0"
如果我的函数没有参数,也会出现这个错误。这个函数在VB的表单中可以正常工作。同样,以下函数可以很好地返回一个MyObj。
Public Function CreateMyObj() As MyObj
Set CreateMyObj = New MyObj
End Function
我知道在C#版本中可以制作新的MyObj列表,然后将其.ToArray(),但我真的很想让它工作。谢谢。
解决方案 我发现了如何做到这一点。我必须使用没有/sysarray标志的tlbimp.exe(VS内部必须使用)。之后,我能够正确地让所有事情正常工作。感谢大家的帮助。