Avatar billede lasserasch Juniormester
19. december 2009 - 15:26 Der er 6 kommentarer og
1 løsning

Propinfo.GetType().GetMethod() virker ikke. Hvorfor?

Hejsa.

Jeg har en lille ting som jeg håber en kan hjælpe med.

Jeg har bygget en dynamisk metode til at trække informationer ud fra en SQL database. Metoden løber igennem alle properties for et objekt og forsøger at sætte data fra databsen ned på objektet som så retuneres til sidst.

Det virker fint for alle standard properties. Dvs. strings, int osv...

Men hvis et objekt har referencer til andre objekter så skulle jeg gerne have den til at gå ned i det objekt den har reference til og køre en "GetById" metode.

Men det virker ikke. Den kan ikke finde metoden, så jeg gør et eller andet galt.

GetById metoden er statisk på det refererede objekt.

Min kode hertil ser således ud:

----------------------------------
object[] parameters = new object[1];
parameters[0] = (int)Sqdr.GetValue(i);
System.Reflection.MethodInfo methodinfo = propinfo.GetType().GetMethod("GetById", System.Reflection.BindingFlags.Static);

if (methodinfo != null)
propinfo.SetValue(sender, methodinfo.Invoke(null, parameters), null);
-----------------------------------


methodinfo er altid null hvilket jeg ikke forstår.
propinfo er af korrekt type, så fejlen må ligge et eller andet sted omkring

'System.Reflection.MethodInfo methodinfo = propinfo.GetType().GetMethod("GetById", System.Reflection.BindingFlags.Static);'

Jeg har forsøgt at ændre "GetById" metoden til at være public of fjernet bindingflags.static, men det hjælper ikke.

Jeg har også forsøgt at tilføje : System.Reflection.MethodInfo[] methods = propinfo.GetType().GetMethods();

for at se hvilke metoder der er tilgængelige. Ingen af mine public metoder på det refererede objekt vises.

Jeg er lidt LOST... Er det mig som gør noget helt forkert?

Mvh.
LAsse
Avatar billede lasserasch Juniormester
19. december 2009 - 15:45 #1
Jeg har lavet et meget lille og simpelt eksempel for at vise hvad jeg mener. Det er måske nemmere at forstå en ovenstående...

Kan downloades her: http://www.r-coding.dk/downloads/eksperten/referencefejl.zip

I eksemplet ville jeg meget gerne have at jeg kunne finde 'RunMe' metoden som ligger på class2 via den 'Test' metoden som ligger på class1.

Det er i bund og grund det som er mit problem.

MVh.
Lasse
Avatar billede arne_v Ekspert
19. december 2009 - 15:45 #2
Hvordan er GetById erklæret ?
Avatar billede arne_v Ekspert
19. december 2009 - 15:51 #3
Jeg ligger lige på eksemplet.
Avatar billede arne_v Ekspert
19. december 2009 - 15:54 #4
prøv med:

propinfo.GetType().GetMethods()

->

propinfo.PropertyType.GetMethods()
Avatar billede arne_v Ekspert
19. december 2009 - 15:56 #5
Jeg mener at PropertyType returnerer typen af din property mens GetType() returnerer ProprtyInfo klassen selv (fordi den er arvet fra Object klassen).
Avatar billede lasserasch Juniormester
19. december 2009 - 16:00 #6
Yes. Det virker.

Takker.

Smid svar :-)

Mvh.
Lasse
Avatar billede arne_v Ekspert
19. december 2009 - 16:02 #7
svar
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