由於測試和時間測量,我必須在現有的C#Winforms項目中編寫某種日誌。用計數器替換代碼中的文本
我希望儘量減少修改應用程序,所以我我的限制問題計數數字替換文本:
我想傳遞一個行:
Log.WriteLine(position)
多次在代碼然後用1到n
之間的數字依次替換「位置」。
我不能在這種情況下使用計數器,因爲很多循環我沒有找到正確的位置。
由於測試和時間測量,我必須在現有的C#Winforms項目中編寫某種日誌。用計數器替換代碼中的文本
我希望儘量減少修改應用程序,所以我我的限制問題計數數字替換文本:
我想傳遞一個行:
Log.WriteLine(position)
多次在代碼然後用1到n
之間的數字依次替換「位置」。
我不能在這種情況下使用計數器,因爲很多循環我沒有找到正確的位置。
您可以檢索文件名和行號而不是計數器。
static private void Trace()
{
StackFrame callStack = new StackFrame(1, true);
Log.WriteLine(
String.Format("At {0}:{1}",
callStack.GetFileName(),
callStack.GetFileLineNumber()));
}
+1。我自己沒有嘗試過,但我認爲這需要你有.pdb文件可用。 – 2010-06-01 08:24:22
工作正常,沒有「跳過一個框架」。 只是「新的StackFrame(真)」爲我做了! 謝謝! – Gpx 2010-06-01 08:54:27
我不明白你爲什麼認爲你不能使用這個計數器。如果您有深嵌套的循環和大量的if語句使得計算困難的位置值,當你想記錄它的麻煩,簡單地做這樣的事情
Log.WriteLine(position++)
不會忘記你以前到零計數器需要使用它。
我希望我誤解了你的問題,所以你可能想澄清一下。
我猜OP希望在每次運行中爲相同的位置打印*相同的數字。當存在循環時(迭代次數不同),您的建議將不起作用。 – 2010-06-01 08:13:47
@ 0xA3:是的,我們猜測OP的要求,我發現這個問題很難理解,所以我的建議可能是廣泛的。 – 2010-06-01 08:22:50
感謝您的想法,但我想知道代碼中的確切位置,如Stefans「行」的事情。在循環中像++一樣計數,每次回合都會獲得更高的值,但不是正確的位置。 – Gpx 2010-06-01 08:44:50
假設我正確地讀你的問題,我會寫一個簡單的腳本[插入你最喜歡的腳本語言]。
基本上寫你的代碼,然後用腳本做替代。
你可以做一個Perl的一個班輪類似perl -e open FILE, ">", "file.cs"; $i = 0; while(<INF>) { $_ ~= s/position/$i++/g; print $_; } > mynewfile.cs
這不是真正的perl的語法,很明顯,但本質上是這樣的想法。
當你找到一個體面的解決方案時,你可以手動鍵入所有的數字。 – 2010-06-01 08:11:23