Учитывая, что файл данных отладки доступен (PDB), и с помощью System.Reflection или другой аналогичной среды, такой как Mono.Cecil , как программно получить исходный файл имя и номер строки, в которой объявлен тип или член типа.
Например, допустим, вы скомпилировали этот файл в сборку:
C: \ MyProject \ Foo.cs
1: public class Foo
2: {
3: public string SayHello()
4: {
5: return "Hello";
6: }
7: }
Как сделать что-то вроде:
MethodInfo methodInfo = typeof(Foo).GetMethod("SayHello");
string sourceFileName = methodInfo.GetSourceFile(); // ?? Does not exist!
int sourceLineNumber = methodInfo.GetLineNumber(); // ?? Does not exist!
sourceFileName будет содержать «C: \ MyProject \ Foo.cs», а sourceLineNumber будет равен 3.
Обновление: System.Diagnostics.StackFrame
действительно может получить эту информацию, но только в объеме текущего выполняющегося стека вызовов. Это означает, что метод должен быть вызван первым. Я хотел бы получить ту же информацию, но без вызова члена типа.