4

目前,我通过 StackFrame 来获取当前文件/行号:

Log.Message(new StackFrame(0, true), "FAILED to start cooling.");

Log 类中的位置是:

public void Message(StackFrame Callstack, string message)
{
    string logMessage = string.Format("{0} {1}:{2} {3} \t{4}", DateTime.Now.ToString(), Callstack.GetFileName(), Callstack.GetFileLineNumber(), Callstack.GetMethod(), message);

    //Write to console
    Console.WriteLine(logMessage);

    //write to file
}

我是否需要每次都将 StackFrame 传递给 Log.Message() 方法?这可以在它自己的方法中完成而不通过它吗?有没有更简单的方法?

谢谢。

4

2 回答 2

1

你可以做:

public void Message(string message) {
    StackFrame callstack = new StackFrame(1, true);
    // ...
}

跳过调用堆栈的1Message 方法部分并获取它的调用者。

于 2011-05-20T16:29:15.960 回答
0

你可以。的第一个构造函数参数StackFrame定义要跳过的帧数。Message()因此,当在just pass中创建对象实例时1,它将显示调用框架(您在其中使用了对 的调用Message())。

于 2011-05-20T16:30:20.103 回答