Gå til innhold

Finne ut hvilke klasser som arver av klasse X


Anbefalte innlegg

Hepp!

 

Jeg har en klasse som kun brukes som "forelder" av andre klasser. Er det mulig å finne ut hvor mange barn denne forelder-klassen har og identifisere disse?

 

Jeg har enkelte klasser som jeg bruker for å forberede forskjellige data på dataoverføring, problemet er at når jeg skal motta en slik klasse, skulle jeg kjørt en for-loop og finnet ut hva slags klasse jeg har motatt ved å sammenligne en variabel...

 

Jeg vet dette er mulig i C#, men aner ikke hva metoden heter (så google blir litt vanskelig) :/

Lenke til kommentar
Videoannonse
Annonse

Jeg har en klasse som kun brukes som "forelder" av andre klasser. Er det mulig å finne ut hvor mange barn denne forelder-klassen har og identifisere disse?

 

Nei, det er ikke mulig. Dvs. problemet er at antall slike klasser kan variere fra et til et annet tidspunkt i programmet (den andre veien er imidlertid veldig lett -- gitt en klasse er det trivielt å finne alle superklassene), og det finnes ingen pekere fra super til subklasse. Du kan muligens undersøke hele omgivelsen for klasser, men da har du kun tilgang til den "aktive" omgivelsen (dvs. det lokale, globale og builtin-navnerommet på det tidspunktet når kallet gjøres, hvilket er noe annet igjen).

 

Jeg har enkelte klasser som jeg bruker for å forberede forskjellige data på dataoverføring, problemet er at når jeg skal motta en slik klasse, skulle jeg kjørt en for-loop og finnet ut hva slags klasse jeg har motatt ved å sammenligne en variabel...

 

Eh? Hvis du kan sende forskjellige typer over nettverket, må typebeskrivelsen være en del av serialiseringsprotokollen din *og* typen må være kjent både for avsender og mottager (f.eks. at de gjør de samme importene). Da ser jeg ikke helt problemet ditt -- det er bare å hente den klassen hvis beskrivelse du har i typebeskrivelsesfeltet i serialiseringsprotokollen. Den mest primitive utgaven for dette blir pickle (dog den er uegnet for nettverksoverføring grunnet sikkerhetsproblematikker), men det kan gi en ide om hvordan du kunne gå fram.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...