Delegates mit .NET

Mehr Flexibilität

Der wesentliche Nachteil ist dabei der, dass das Logging eine fest verdrahtete Methode verwendet: Alle Nachrichten werden grundsätzlich auf die Konsole geschrieben. Das ist jedoch nicht in allen Umgebungen sinnvoll. Verwendet man die Klasse "Aclass" beispielweise in einem Programm mit GUI, so will man die Log-Informationen vermutlich nicht auf der Konsole, sondern stattdessen in einem Fenster angezeigt bekommen. Verwendet man die Klasse hingegen in einem Service, dann wäre eine Log-Datei oder auch das EventLog von Windows die richtige Stelle, um die Meldungen aufzunehmen. Die Meldungstexte wären zwar immer dieselben - aber die Methode, um diese Texte auszugeben, unterscheidet sich dramatisch.

Für die Lösung eines solchen Problems sind Delegates wie geschaffen. Bei einem Delegate beschreibt man nur, wie eine Funktion aussieht, gibt aber nicht an, welche Funktion konkret aufgerufen werden soll. Das "Aussehen" einer Funktion wird dabei durch die Anzahl ihrer Parameter und deren Typen sowie durch den Typ des Rückgabewerts bestimmt. Man spricht auch von der "Signatur" der Funktion.