1. Herfried K. Wagner’s VB.Any
  2. .NET
  3. Frequently Asked Questions

Calling a method by its name

Calling a method by its name

Calling a method by its name

There are different ways to call methods only by a string that contains
their name.  The simplest way is to use Visual Basic .NET's 'CallByName'
method.  The listing below shows some samples of method calls using this

Dim mm As New CallByNameDemo()
CallByName(mm, "ShowMessage", CallType.Method)
CallByName( _
    mm, _
    "PrintTexts", _
    CallType.Method, _
    New String(2) {"Text 1", "Text 2", "Text 3"}, _
    2 _
CallByName(mm, "SampleProperty", CallType.Set, "MyValue")
Console.WriteLine( _
    "MakeDouble(""Hello"") returns ""{0}""", _
     CallByName(mm, "MakeDouble", CallType.Method, "Hello") _
Public Class CallByNameDemo
    Public Sub ShowMessage()
        Console.WriteLine("This is a message.")
    End Sub

    Public Function PrintTexts( _
        ByVal Texts() As String, _
        ByVal Times As Integer _
    ) As Boolean
        For Times = 1 To Times
            For i As Integer = 0 To Texts.Length - 1
            Next i
        Next Times
    End Function

    Public WriteOnly Property SampleProperty() As String
        Set(ByVal Value As String)
            Console.WriteLine( _
                "'SampleProperty' was set to ""{0}"".", _
                Value _
        End Set
    End Property

    Public Function MakeDouble(ByVal Text As String) As String
        Return Text & Text
    End Function
End Class

An alternative, more low-level solution is based on reflection, which is
provided by the .NET Framework.  'Type.InvokeMember' can be used to invoke
a method on an object.  The documentation of this method contains some
samples on how to use it to access fields, constructors, methods, and

.NET Framework Class Library -- 'Type.InvokeMember' Method