Generics VB.Net

Option Explicit On
Option Strict On
Public Delegate Sub MyGenericDelegate(Of T)(ByVal arg As T)
Public Delegate Sub MyDelegate(ByVal arg As Object)
Module Program
  Sub Main()
    Dim d As New MyGenericDelegate(Of Integer)(AddressOf IntegerTarget)
    d(100)
    Dim d2 As New MyGenericDelegate(Of String)(AddressOf StringTarget)
    d2("Cool!")
  End Sub
  Public Sub IntegerTarget(ByVal arg As Integer)
    Console.WriteLine("You passed me a {0} with the value of {1}", arg.GetType().Name, arg)
  End Sub
  Public Sub StringTarget(ByVal arg As String)
    Console.WriteLine("You passed me a {0} with the value of {1}", arg.GetType().Name, arg)
  End Sub
End Module