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);
    // ...
}

は、コールスタックの1メッセージ メソッド部分をスキップし、呼び出し元を取得します。

于 2011-05-20T16:29:15.960 に答える
0

あなたはできる。の最初のコンストラクタ パラメータはStackFrame、スキップするフレーム数を定義します。Message()そのため、パス内でオブジェクト インスタンスを作成する1と、呼び出しフレーム (への呼び出しを使用した場所Message()) が表示されます。

于 2011-05-20T16:30:20.103 に答える