由于测试和时间测量,我必须在现有的C#Winforms项目中编写某种日志。
我想尽量减少对应用程序的更改,所以我将我的问题限制为通过计算数字来替换文本:
我想传递一句话:
Log.WriteLine(position)
在代码中多次,然后将“位置”替换为依次从1到n
的数字。
在这种情况下我不能使用计数器,因为很多循环我没有得到正确的位置。
答案 0 :(得分:2)
您可以检索文件名和行号而不是计数器。
static private void Trace()
{
StackFrame callStack = new StackFrame(1, true);
Log.WriteLine(
String.Format("At {0}:{1}",
callStack.GetFileName(),
callStack.GetFileLineNumber()));
}
答案 1 :(得分:1)
我不明白为什么你认为你不能使用计数器。如果您遇到深度嵌套循环和许多if语句的问题,当您想要记录它时很难计算位置值,那么只需执行类似这样的操作
Log.WriteLine(position++)
在您需要使用它之前不要忘记将计数器归零。
我希望我误解了你的问题,所以你可能想澄清一下。
答案 2 :(得分:1)
假设我正确地阅读了你的问题,我会在[插入你最喜欢的脚本语言]中写一个简单的脚本。
基本上编写代码,然后使用脚本进行替换。
你可以做一个像perl -e open FILE, ">", "file.cs"; $i = 0; while(<INF>) { $_ ~= s/position/$i++/g; print $_; } > mynewfile.cs
显然,这不是真正的perl语法,但基本上就是这个想法。