2009-04-03 13 views
1

À l'aide de VB.NET, existe-t-il un moyen de transmettre un argument de référence lors de l'appel d'une fonction dans une DLL. Supposons que je veux passer arg2 comme argument de référence, comment ferais-je cela? En d'autres termes, je veux pointer arg2 vers quelque chose d'autre dans la fonction invoquée.Méthode DLL invoquer VB.NET avec les arguments ByRef

Répondre

1

Si la fonction cible est définie comme ByRef cela fonctionnera automagiquement sinon AFAIK vous ne pouvez pas.

appeler comme:

method.invoke(obj, arg1, arg2, arg3) 

Dans votre cas, vous réellement envoyer un paramètre (un tableau d'objets)

+0

Oui, l'argument de fonction cible est défini parref, mais cela ne fonctionne pas. – user79755

+0

Yup, c'est comme ça que je l'appelle. – user79755

+0

juste mis à jour, pouvez-vous essayer cela? –

0

Oui, les paramètres de votre tableau d'objets détiendront les valeurs définies dans la méthode appel. Une chose à savoir est que si arg1, arg2 et arg3 sont des types de valeur (comme Int32) alors la variable arg1 réelle n'aura pas été mise à jour car sa valeur a été copiée dans le tableau et non sa référence. Pour contourner ce problème, créez le tableau d'objets avant l'appel de la fonction, puis sortez les valeurs du tableau par la suite. Comme ceci

Dim paramArray = New [Object]() {arg1, arg2, arg3} 
method.Invoke(obj, paramArray) 
arg1 = paramArray[0] 
arg2 = paramArray[1] 
arg3 = paramArray[2]