目前,我通过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()方法?这可以通过它自己的方法完成而不通过吗?有更简单的方法吗?
感谢。
答案 0 :(得分:1)
你可以这样做:
public void Message(string message) {
StackFrame callstack = new StackFrame(1, true);
// ...
}
1
跳过callstack的Message方法部分并让它调用。
答案 1 :(得分:0)
你可以。 StackFrame
的第一个构造函数参数定义要跳过的帧数。因此,在Message()
内创建对象实例时,只需传递1
,它就会显示调用框架(您使用Message()
调用的地方)。