Reflection VB.Net

Imports System
Imports System.Reflection
Imports System.IO
Public Class TestClass
    Public Name As String
    Private values() As [Object] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    Default Public Property Item(ByVal index As Integer) As [Object]
        Get
            Return values(index)
        End Get
        Set(ByVal Value As [Object])
            values(index) = Value
        End Set
    End Property
    Public ReadOnly Property Value() As [Object]
        Get
            Return "the value"
        End Get
    End Property
    Public Sub New(ByVal initName As String)
        Name = initName
    End Sub
    Public Sub New()
        MyClass.New("initialName")
    End Sub
    Private methodCalled As Integer = 0
    Public Shared Sub SayHello()
        Console.WriteLine("Hello")
    End Sub
    Public Sub AddUp()
        methodCalled += 1
        Console.WriteLine("AddUp Called {0} times", methodCalled)
    End Sub
    Public Shared Function ComputeSum(ByVal d1 As Double, ByVal d2 As Double) As Double
        Return d1 + d2
    End Function
    Public Shared Sub PrintName(ByVal firstName As [String], ByVal lastName As [String])
        Console.WriteLine("{0},{1}", lastName, firstName)
    End Sub
    Public Sub PrintTime()
        Console.WriteLine(DateTime.Now)
    End Sub
    Public Sub Swap(ByRef a As Integer, ByRef b As Integer)
        Dim x As Integer = a
        a = b
        b = x
    End Sub
End Class
Class Invoke
    Public Shared Sub Main()
        Dim t As Type = GetType(TestClass)
        Dim c As New TestClass()
        Dim result As Object
        Console.WriteLine("Invoking an indexed property (getting and setting.)")
        Dim index As Integer = 3
        result = t.InvokeMember("Item", BindingFlags.GetProperty, Nothing, c, New Object() {index})
        Console.WriteLine("Item[{0}] == {1}", index, result)
        ' BindingFlags.SetProperty
        ' Set an indexed property value.
        index = 3
        t.InvokeMember("Item", BindingFlags.SetProperty, Nothing, c, New Object() {index, "NewValue"})
        result = t.InvokeMember("Item", BindingFlags.GetProperty, Nothing, c, New Object() {index})
        Console.WriteLine("Item[{0}] == {1}", index, result)
    End Sub
End Class