J'ai un programme VB6 qui appelle une méthode COM, en passant 2 tableaux en tant que paramètres et en attendant 2 tableaux à remplir en réponse.Marshaling tableaux de VB.NET à COM objet
Le code est le suivant: ItemID et ItemClientHandles sont les paramètres du tableau d'entrée et MyItemServerHandles et Errors sont renseignés par l'objet COM.
Dim ItemIDs(2) As String
Dim ItemClientHandles(2) As Long
Dim Errors() As Long ' Array for returned Item related errors
Dim MyItemServerHandles() As Long ' Server Handles for Items
ItemIDs(1) = "2,VW1000,word"
ItemIDs(2) = "2,VW1002,word"
ItemClientHandles(1) = 1
ItemClientHandles(2) = 2
Call MyItems.AddItems(2, ItemIDs, ItemClientHandles, MyItemServerHandles, Errors)
Maintenant, je voudrais appeler la même méthode de VB.NET, et a essayé quelque chose comme ceci pour définir les tableaux:
<MarshalAs(UnmanagedType.LPArray, ArraySubType:=UnmanagedType.I4, SizeConst:=2)> Private MyItemServerHandles(2) As Int32 ' Server Handles for Items
<MarshalAs(UnmanagedType.LPArray, ArraySubType:=UnmanagedType.LPWStr, SizeConst:=2)> Private ItemIDs(2) As String
<MarshalAs(UnmanagedType.LPArray, ArraySubType:=UnmanagedType.I4, SizeConst:=2)> Private ItemClientHandles(2) As Int32
<MarshalAs(UnmanagedType.LPArray, ArraySubType:=UnmanagedType.I4, SizeConst:=2)> Dim Errors(2) As Int32 ' Array for returned Item related errors
mais ne peut le faire fonctionner, parce que je reçois une erreur (que j'essaie de traduire de l'italien):
Impossible de lancer des objets à partir du type 'System.Int32 [*]' taper 'System.Int32 []'
Quelle est la manière correcte de marshaler les baies de code managé VB.NET en code COM non managé?
Merci