VB.NETを使用すると、DLLで関数を呼び出すときに参照引数を渡すことができます。VB.NET Invoke DLLメソッドby ByRef引数
arg2を参照引数として渡したいとしたら、どうすればよいでしょうか?
method.Invoke(obj, New [Object]() {arg1, arg2, arg3})
つまり、呼び出された関数内のarg2を指したいと思います。
VB.NETを使用すると、DLLで関数を呼び出すときに参照引数を渡すことができます。VB.NET Invoke DLLメソッドby ByRef引数
arg2を参照引数として渡したいとしたら、どうすればよいでしょうか?
method.Invoke(obj, New [Object]() {arg1, arg2, arg3})
つまり、呼び出された関数内のarg2を指したいと思います。
ターゲット機能がByRef
と定義されていると、自動的に動作しますが、そうでなければAFAIKできません。
が好きそれを呼び出す:あなたのケースで
method.invoke(obj, arg1, arg2, arg3)
をあなたが実際にはい、あなたのオブジェクト配列内のパラメータはメソッドの内部で設定された値を保持する一つのパラメータ(オブジェクト配列)
を送りますコール。注目すべきことは、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]
はい、ターゲット関数の引数はrefで定義されていますが、機能しません。 – user79755
うん、それは私がそれを呼んでいる方法です。 – user79755
ちょうど更新しました、あなたはこれを試すことができますか? –