' methodinvoke.vb Imports System Imports System.Reflection Public Class MethodInvoke Shared Sub Main() Dim msg As String = "メリー・クリスマス" Dim stringType As Type = msg.GetType() ' Dim stringType As Type = GetType(string) ' これでもOK ' 以下はmsg.Remove(0, 4)と同じ ' Dim mi1 As MethodInfo = StringType.GetMethod("Remove") Dim removed As String = CType(mi1.Invoke(msg, New Object() { 0, 4 }), String) Console.WriteLine(removed) ' 出力:クリスマス ' 以下はmsg.SubString(4)と同じ ' ' オーバーロードされたメソッドがあるため ' パラメータの型によりメソッドを特定 Dim mi2 As MethodInfo = StringType.GetMethod("Substring", New Type() { GetType(Integer) }) Dim subString As string = CType(mi2.Invoke(msg, New Object() { 4 }), String) Console.WriteLine(subString) ' 出力:クリスマス ' 以下はmsg.IndexOf("クリ")と同じ ' ' オーバーロードされたメソッドがあるため ' パラメータの型によりメソッドを特定 Dim mi3 As MethodInfo = StringType.GetMethod("IndexOf", New Type() { GetType(string) }) Dim index As Integer = CType(mi3.Invoke(msg, New Object() { "クリ" }), Integer) Console.WriteLine(index) ' 出力:4 End Sub End Class ' コンパイル方法:vbc methodinvoke.vb