|
分類:[.NET 全般]
InvokeMemberを使ったメソッド呼出し時に、参照渡し引数を指定するやり方がわかりません。 ParameterModifierを使えばいいのかと思ったのですが、結果的に値渡しのような動作になってしまいます。 方法が間違ってるのでしょうか。
Imports System.Reflection Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim IsHogeFlag As Boolean = False
Dim t As Type = GetType(ClsFuga) Dim obj As Object = t.InvokeMember(Nothing, BindingFlags.CreateInstance, _ Nothing, Nothing, New Object() {}) Dim p As New ParameterModifier(1) p(0) = True Dim mods() As ParameterModifier = {p} Dim args() As Object = {IsHogeFlag}
Console.WriteLine(IsHogeFlag.ToString()) ' Falseが表示 obj.GetType().InvokeMember("FugaMethod", BindingFlags.InvokeMethod, Nothing, obj, _ args, mods, Nothing, Nothing) Console.WriteLine(IsHogeFlag.ToString()) ' Trueが表示されて欲しいがFalseのまま End Sub End Class Public Class ClsFuga Public Sub FugaMethod(ByRef IsHogeFlag As Boolean) IsHogeFlag = True End Sub End Class
|