Как получить реальное имя метода вместо .ctor? - PullRequest
3 голосов
/ 28 апреля 2011

Привет, у меня есть метод, получающий имя вызывающего метода:

    public static string GetMethodName()
    {
        System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(); 
        return trace.GetFrame(1).GetMethod().Name;
    }

И когда я отслеживаю свои ошибки и исключения, я всегда получаю имя метода .ctor как избежать этого или хотя бы получить что-то вроде ClassName <.ctor>?

1 Ответ

2 голосов
/ 11 июля 2011

Как насчет:

StackTrace stackTrace = new StackTrace();
foreach(StackFrame sf in stackTrace.GetFrames())
{
   if (!sf.GetMethod().Name.StartsWith("."))    // skip all the ".ctor" methods
   {
       return sf.GetMethod().DeclaringType.Name + "." + sf.GetMethod().Name;
   }
}
return "??"; // What do you want here?

Использование сравнения строк немного сложновато, но работает:)

...