Délégués multicast
Contexte : Les délégués peuvent contenir plusieurs méthodes via les opérateurs + et -. L’invocation d’un délégué multicast appelle toutes les méthodes dans l’ordre.
public delegate void Notify(string message);
public static void LogToFile(string msg) => Console.WriteLine($"Fichier : {msg}");public static void LogToConsole(string msg) => Console.WriteLine($"Console : {msg}");
Notify logger = LogToFile;logger += LogToConsole; // ajoute la deuxième méthode
logger("Hello"); // les deux méthodes sont appeléesSuppression de méthodes
Section intitulée « Suppression de méthodes »logger -= LogToFile; // supprime la première méthodelogger("Seulement console");Valeurs de retour
Section intitulée « Valeurs de retour »Pour les délégués multicast avec un retour non void, seule la valeur de la dernière méthode est conservée. Utilisez GetInvocationList() pour traiter toutes.
foreach (Notify n in logger.GetInvocationList()){ n("Traitement");}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Notifications d’événements : Plusieurs abonnés à un événement sont stockés comme un délégué multicast. Lever l’événement notifie tous les abonnés.
Exemple : Dans ASP.NET Core, les événements IApplicationLifetime utilisent des délégués multicast.