使用VB.NET,有没有办法在调用dll中的函数时传递引用参数。
假设我想传递arg2作为参考参数,我该怎么做?
method.Invoke(obj, New [Object]() {arg1, arg2, arg3})
换句话说,我想将arg2指向调用函数中的其他内容。
答案 0 :(得分:1)
如果目标函数定义为ByRef
它将自动运行,否则AFAIK你不能。
称之为:
method.invoke(obj, arg1, arg2, arg3)
在您的情况下,您实际发送一个参数(对象数组)
答案 1 :(得分:0)
是的,对象数组中的参数将保存在方法调用中设置的值。需要注意的一点是,如果arg1,arg2和arg3是值类型(如Int32),那么实际的arg1变量将不会被更新,因为它的值被复制到数组中而不是它的引用。
要解决此问题,请在函数调用之前创建对象数组,然后将值从数组中拉出。喜欢这个
Dim paramArray = New [Object]() {arg1, arg2, arg3}
method.Invoke(obj, paramArray)
arg1 = paramArray[0]
arg2 = paramArray[1]
arg3 = paramArray[2]