Ok, die Liste gehört dahin, wo gefeuert wird
Wieso? Dann muss ja in Zukunft jede Klasse, die Multicast unterstützen soll, deine Logik nochmal implementieren. Schreib Dir doch lieber einen einzigen Multicasteventcontroller.
Derjenige, der etwas (ein Event) mitzuteilen hat, meldet sich und den Eventtyp beim Controller an.
Diejenigen, die benachrichtigt werden wollen, melden sich und den Eventtyp, über den sie benachrichtigt werden wollen, ebenfalls dort an. So hast Du eine lose Bindung und eine einzige Klasse, die alle Events verwaltet.