嗨,我有方法得到调用方法的名称:

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

当我跟踪错误和异常时,我总是得到方法名称.ctor
如何避免这种情况或至少得到类似ClassName 之类的东西?

最佳答案

怎么样:

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?

使用字符串比较有点繁琐,但是它可以工作:)

关于stack-trace - 如何获取真实的方法名称而不是.ctor?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5819647/

10-10 02:48