VB.NET Invoke DLL metode med ByRef argumenter

stemmer
2

Ved hjelp av VB.NET, er det en måte å passere en referanse argument når påkalle en funksjon i en dll.

Anta at jeg ønsker å passere arg2 som en referanse argument, hvordan ville jeg gjøre det?


method.Invoke(obj, New [Object]() {arg1, arg2, arg3})

Med andre ord vil jeg peke arg2 til noe annet innenfor påkalte funksjon.

Publisert på 03/04/2009 klokken 14:01
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Hvis målet funksjon definert som ByRefdet vil fungere auto ellers AFAIK du ikke kan.

Kall det slik ut:

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

I ditt tilfelle faktisk du sende en parameter (et objekt array)

Svarte 03/04/2009 kl. 14:11
kilden bruker

stemmer
0

Ja, vil parametrene i objektet rekke holde verdiene som var angitt i metodekallet. En ting å være klar over er at hvis arg1, arg2 og arg3 er verdityper (som Int32) deretter selve arg1 variabelen ikke har blitt oppdatert fordi verdien ble kopiert inn i rekken ikke sin referanse.

For å komme rundt dette ved å opprette objektet matrise før funksjonskallet, og trekk verdiene ut av tabellen etterpå. Som dette

Dim paramArray = New [Object]() {arg1, arg2, arg3}
method.Invoke(obj, paramArray)
arg1 = paramArray[0]
arg2 = paramArray[1]
arg3 = paramArray[2]
Svarte 15/03/2011 kl. 15:31
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more