Keine Ahnung, worauf du dich bei den Generics beziehst, das geht glaub ich am Thema vorbei.
Es geht ihm (wo weit ich das verstanden habe) nur um die Parameter, die übergeben werden müssen bei einem Event, damit der Event-Handler was damit anfangen kann - da will er nicht casten müssen. Und um das zu lösen schlägst du genau das vor, was auch ich schon gesagt habe. Jedes Ereignis (um es mal nicht mit dem Keyword "Event" zu verwechseln) hat einen eigenen Typ mit eigenem Parameter-Typ und ein eigenes Event (hier jetzt das echte C# Keyword!). Damit entfällt jedwede Art von Cast, da eben nicht nur eine Methode aufgerufen wird, sondern viele verschiedene.
Aber ich glaube, dass sein eigentliches Problem ganz woanders liegt und ihm das noch gar nicht klar ist. Denn wozu genau dient denn der Event-Manager überhaupt oder das gesamte Event-System? Denn ich nehme mal an, das wird verwendet um z.B. zwei Objekten mitzuteilen, dass sie kollidiert sind oder eins Lebenspunkte verliert oder ähnliches. Aber da würde ich kein Event-System brauchen, denn wozu da eine Callback aufrufen, wenn man die notwendige Methode auch direkt aufrufen kann? Events machen ja nur dann Sinn, wenn man die konkreten Objekte (die Beobachter) eigentlich gar nicht kennt (oder nicht kennen will), die da "informiert" werden wollen, sobald sich in einem anderen Objekt (das Beobachtete) etwas ändert. Das ist in seinem Code aber vermutlich gar nicht der Fall, sondern eher, dass ein Objekt geändert werden soll (kollidiert, HP verloren, was auch immer) und das Objekt selbst darüber in Kenntnis gesetzt werden muss. Klar, man kann es mit Events irgendwie lösen, aber den genauen Vorteil sehe ich da irgendwie nicht gegenüber einem direkten Methoden-Aufruf.
Aber dafür sind die Informationen vielleicht auch etwas zu spärlich, um das genau beurteilen zu können.
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »BlueCobold« (15.04.2011, 10:39)