Avatar billede bromer Nybegynder
19. november 2005 - 21:17 Der er 1 løsning

Finde overloaded metode via reflection

Hej.

Jeg har et stykke kode, der benytter reflection til at finde en række metoder, der er kandidater til kørsel. Koden virker sådanset fint nok, bortset fra at jeg gør noget i omvendt rækkefølge. Jeg finder først alle metoder der matcher på en række navne. Derefter finder jeg den metode der tager det rette antal parametere. Men jeg finder parametre ved at binde en metode. Men her får jeg et problem med overloadede metoder.

Er der nogen der har en løsning på mit problem. Jeg antager at jeg kunne løse det ved at finde parameterantal og typer før jeg finder til metoden. Men hvordan gør jeg det.

Min kode er som følger:


Assembly asm = Assembly.GetEntryAssembly();
foreach(Type asmType in asm.GetTypes()) {
    if (asmType.BaseType.ToString() == "MY_BASE_CLASS") {
        MemberInfo[] members = asmType.GetMembers(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly);
        foreach (MemberInfo mem in members) {
            if (mem.MemberType == MemberTypes.Method) {
                string name = mem.Name;
                if (foundBoundedMethods.Contains(name)) {
                MethodInfo invokedMethod = asmType.GetMethod(name);
Avatar billede bromer Nybegynder
19. november 2005 - 23:16 #1
Jeg fandt en anden vej rundt om det, så jeg istedet for at oprette binde til en metode fandt alle og løb dem igennem.
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