有没有办法在执行代码时获取当前行号? C#

时间:2011-02-04 17:05:55

标签: c#

我有一个将日志写入.txt文件的应用程序

Helper.WriteSimpleDebugTrace(securityLogFilePath, "About to authenticate user.");
Helper.WriteSimpleDebugTrace(securityLogFilePath, "Directory Search Path:");
Helper.WriteSimpleDebugTrace(securityLogFilePath, "Username:" + username);

我只是想知道有没有办法将当前行号传递给这个方法?

2 个答案:

答案 0 :(得分:3)

StackFrame class可以生成此信息。看看页面末尾的例子。

答案 1 :(得分:2)

你可能想要类似下面的方法。 Conditional属性将导致对此方法的所有调用在非调试版本中编译为空。然后,如果您抓取StackFrame 1而不是0,则会获得有关调试DebugPrintTrace的位置的信息。

    [Conditional("DEBUG")]
    public static void DebugPrintTrace(string message)
    {
        StackTrace stackTrace = new StackTrace(true);
        StackFrame sf = stackTrace.GetFrame(1);
        Console.WriteLine("Trace "
            + sf.GetMethod().Name + " "
            + sf.GetFileName() + ":"
            + sf.GetFileLineNumber() + Enviroment.NewLine);

       Console.WriteLine(message + Enviroment.NewLine);


    } 

最好还在你的WriteSimpleDebugTrace中添加condtitional“DEBUG”