VB.Net/Generics/Generic Delegate
Generic delegate can point to any method taking a single argument (specified at the time of creation)
<source lang="vbnet"> 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
</source>