将代码中的文本替换为计数

时间:2010-06-01 08:07:49

标签: c# .net logging

由于测试和时间测量,我必须在现有的C#Winforms项目中编写某种日志。

我想尽量减少对应用程序的更改,所以我将我的问题限制为通过计算数字来替换文本:

我想传递一句话:

Log.WriteLine(position)

在代码中多次,然后将“位置”替换为依次从1到n的数字。

在这种情况下我不能使用计数器,因为很多循环我没有得到正确的位置。

3 个答案:

答案 0 :(得分:2)

Take a look at this

您可以检索文件名和行号而不是计数器。

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-one-liner

显然,这不是真正的perl语法,但基本上就是这个想法。