Imports System
Public Class MainClass
Shared Sub Main( )
Dim Writer, Logger As _
MyClassWithDelegate.StringDelegate
Dim myMulticastDelegate As MyClassWithDelegate.StringDelegate
Writer = New MyClassWithDelegate.StringDelegate( _
AddressOf MyImplementingClass.WriteString)
Logger = New MyClassWithDelegate.StringDelegate( _
AddressOf MyImplementingClass.LogString)
Dim arr( ) As MyClassWithDelegate.StringDelegate = _
{Writer, Logger}
Writer("String passed to Writer" & vbCrLf)
Logger("String passed to Logger" & vbCrLf)
Console.WriteLine(vbCrLf & "myMulticastDelegate = " + _
"Writer and Logger")
myMulticastDelegate = _
DirectCast(System.Delegate.Combine(arr), _
MyClassWithDelegate.StringDelegate)
myMulticastDelegate("First string passed to Collector")
Console.WriteLine(vbCrLf & _
"myMulticastDelegate Adds Transmitter")
Console.WriteLine(vbCrLf & "myMulticastDelegate -= Logger")
myMulticastDelegate = _
DirectCast(System.Delegate.Remove(myMulticastDelegate, _
Logger), MyClassWithDelegate.StringDelegate)
myMulticastDelegate("Third string passed to Collector")
End Sub 'Main
End Class
Public Class MyClassWithDelegate
Public Delegate Sub StringDelegate(ByVal s As String)
End Class
Public Class MyImplementingClass
Public Shared Sub WriteString(ByVal s As String)
Console.WriteLine("Writing string {0}", s)
End Sub
Public Shared Sub LogString(ByVal s As String)
Console.WriteLine("Logging string {0}", s)
End Sub
End Class
|