Return array von Objekten, die von VB6 zu C# mit Interop

Ich muss ein array zurückgeben, der initialisierte Objekte von VB6 in C# unter Verwendung von interop. Meine VB-Funktion sieht wie

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

Nun, wenn ich das von C# nach der übergabe des Arrays

Array InData = m_MyObjGenerator.CreateMyOjbArray(5);

Bekomme ich eine system.argumentexceptionerror, wo die Nachricht ist

"Ausnahme vom Typ 'System.ArgumentException' wurde ausgelöst.\r\nParameter name: typeName@0"

Ich bekomme auch diese Fehlermeldung, wenn die Funktion hat keine Parameter. Die Funktion funktioniert in VB aus einem Formular. Ebenso die folgende Funktion gibt eine MyObj gerade fein

Public Function CreateMyObj() As MyObj
 Set CreateMyObj = New MyObj
End Function

Ich weiß, dass ich eine Liste machen kann mit new MyObj ' s in der C# - version und dann .ToArray (), aber ich würde wirklich gerne diese arbeiten. Danke.

Lösung
Finden Sie heraus, wie Sie es tun. Ich musste tlbimp.exe ohne /sysarray Flagge (VS muss intern). Danach war ich in der Lage, um alles richtig funktioniert. Vielen Dank für die Hilfe Jungs.

InformationsquelleAutor Steve | 2009-03-10
Schreibe einen Kommentar