Avatar billede superzapper Nybegynder
06. december 2005 - 17:37 Der er 2 kommentarer og
1 løsning

Reflection på kaldende metodenavn?

Hejsa derude,
jeg vil gerne høre om der er nogen der ved om man via reflection kan få fat i metodenavn og evt klasse på den metode der kaldes fra?

Altså ligesom man ved at kalde System.Reflection.MethodBase.GetCurrentMethod() kan få den aktuelle metode er der så en måde man kan få den kaldende metode?

Gåt ikke umiddelbart ud fra det er muligt, men skal lige høre om der er andre der ved bedre...
Avatar billede arne_v Ekspert
06. december 2005 - 17:43 #1
eksempel:

using System;
using System.Diagnostics;
using System.Reflection;

class MainClass
{
    public static void Main(string[] args)
    {
        Sub1();
        Sub3();
    }
    public static void Sub1()
    {
        Sub2();
    }
    public static void Sub2()
    {
        Test();
    }
    public static void Sub3()
    {
        Test();
    }
    public static void Test()
    {
        StackTrace trace = new StackTrace(true);
        for(int i = 0; i < trace.FrameCount; i++)
        {
            StackFrame frame = trace.GetFrame(i);
            MethodBase method = frame.GetMethod();
            Console.WriteLine(method.DeclaringType + " " + method.Name);
        }
    }
}
Avatar billede superzapper Nybegynder
06. december 2005 - 17:53 #2
Ahh smart - vidste ikke man kunne tilgå stacktrace så direkte...

Takker, som altid arne v to the rescue :)

Smid et svar og pointene er dine...
Avatar billede arne_v Ekspert
06. december 2005 - 18:24 #3
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
Kurser inden for grundlæggende programmering

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