Если вы используете C# 5, вы можете использовать caller information attributes, чтобы сделать это. Например:
using System;
using System.IO;
using System.Runtime.CompilerServices;
public class Test
{
static void Log(string message,
[CallerFilePath] string file = null,
[CallerLineNumber] int line = 0)
{
Console.WriteLine("{0} ({1}): {2}", Path.GetFileName(file), line, message);
}
static void Main()
{
Log("Hello, world");
Log("This is the next line");
}
}
Выход:
Test.cs (16): Hello, world
Test.cs (17): This is the next line
Перед C# 5, вы застряли с проверкой выполнения стека времени, который является менее надежным благодаря встраиванию, и опирается на информацию, присутствующей в время исполнения. (Это, возможно, не в сборке высвобождения, например, в то время как выше будет работать.)
Действительно Вы хотите о utput как это? – Satpal
Посмотрите здесь: http://stackoverflow.com/questions/6369184/print-the-source-filename-and-linenumber-in-c-sharp – christiandev
Вы хотите ИЗМЕНИТЬ поведение Console.WriteLine для этого или вы просто хотите получить номера строк? Для номеров строк проверьте: http://stackoverflow.com/questions/4900744/is-there-a-way-to-get-the-current-line-number-when-executing-code-c-sharp – cvbarros