デバッグデータファイルが利用可能(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
確かにその情報を取得できますが、現在実行中の呼び出しスタックの範囲内でのみです。これは、メソッドを最初に呼び出す必要があることを意味します。同じ情報を取得したいのですが、タイプメンバーを呼び出さないでください。