Avatar billede mysitesolution Nybegynder
22. september 2006 - 17:19 Der er 4 kommentarer og
1 løsning

Generics, og events

Hej...

Jeg er igang med at lave en simpel spil engine, hvor der er collisions. Jeg har en klasse som repræsentere grafiske elementer. Denne klasse bliver arvet fra fx Mand, Våben, Træ (fiktive navne).

I klassen som der bliver arvet fra, vil jeg putte en Collision event. Hvad der skal ske efter en collision afhænger af hvilket type object der støder på. Derfor tænkte jeg, om det evt. via generics er muligt at tilføje eventhandlers for flere typer. pseudo-kode:

obj.Collision<Våben> += new CollisionHandler(); //Bliver kaldt hvis objektet er et Våben
obj.Collision<Træ> += new CollisionHandler(); //Bliver kaldt hvis objektet er et træ.

Man kan selvfølgelig lave en handler hvor man finder ud af hvilken type objekt der er kollideret, men det kræver jo så én eventhandler metode, og en metode for hvert objekt. Her ville jeg gerne skærer den ene metode fra.
Avatar billede mysitesolution Nybegynder
22. september 2006 - 19:50 #1
Har delvist løst problemet nu...
Nu har jeg en Dictionary<> hvor man kan tilføje en metode som value, og en type som key. Min delegate har en sender som er et objekt.

Eneste problem nu, er at i ens metode skal man lave en

Typen obj = (Typen)sender;
Avatar billede segato Nybegynder
23. september 2006 - 12:29 #2
Du kan godt have generiske events men så skal dine delegates være deklareret i din klasse og ikke uden for klasssen.
Avatar billede mysitesolution Nybegynder
23. september 2006 - 13:56 #3
Men så bliver resultatet jo det samme...
Avatar billede mysitesolution Nybegynder
23. september 2006 - 13:58 #4
forresten, går ud fra at du mente generic delegates som fx

EventHandler<En klasse>
Avatar billede mysitesolution Nybegynder
29. september 2006 - 00:05 #5
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester