Мне нужно вернуть массив инициализированных объектов из VB6 в C # с помощью взаимодействия. Моя функция VB выглядит как
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);
Я получаю сообщение об ошибке system.argumentexceptionerror, где сообщение
"Возникло исключение типа 'System.ArgumentException'. \ R \ nИмя параметра: typeName @ 0"
Я также получаю эту ошибку, если моя функция не имеет параметров. Функция работает в VB из формы. Аналогично, следующая функция возвращает MyObj просто отлично
Public Function CreateMyObj() As MyObj
Set CreateMyObj = New MyObj
End Function
Я знаю, что могу составить список новых MyObj в версии C # и затем .ToArray (), но мне бы очень хотелось, чтобы это работало Спасибо.
Решение
Узнал, как это сделать. Мне пришлось использовать tlbimp.exe без флага / sysarray (который VS должен использовать внутри). После этого я смог заставить все работать правильно. Спасибо за помощь, ребята.