6

.NETのTypeオブジェクトを考えると、ソースコードのファイル名を取得することは可能ですか?これはデバッグビルドでのみ使用可能であり、それで問題ありません。また、StackTraceオブジェクトを使用して、コールスタック内の特定のフレームのファイル名を取得できることも知っていますが、それは私が望んでいることではありません。

しかし、特定のSystem.Typeのソースコードファイル名を取得することは可能ですか?

4

3 に答える 3

3

少なくとも C# が部分的なクラス宣言 (たとえば、public partial class Foo2 つのソース コード ファイル) をサポートしていることを考えると、「特定の System.Type のソース コード ファイル名」は何を意味するのでしょうか? 型宣言が同じアセンブリ内の複数のソース コード ファイルにまたがっている場合、宣言が始まるソース コード内の単一のポイントはありません。

@Darin Dimitrov: これは、「型メンバーのソース ファイル名と行番号を取得する方法」の重複のようには見えません。私にとっては、それは type memberに関するものですが、この質問はtypeに関するものです。

于 2010-10-28T08:01:18.213 に答える
3

次のようなコードを使用して、実行中のメソッドからソース ファイルと行番号を取得しました。

//must use the override with the single boolean parameter, set to true, to return additional file and line info

System.Diagnostics.StackFrame stackFrame = (new System.Diagnostics.StackTrace(true)).GetFrames().ToList().First();

//Careful:  GetFileName can return null even though true was specified in the StackTrace above.  This may be related to the OS on which this is running???

string fileName = stackFrame.GetFileName();
string process = stackFrame.GetMethod().Name + " (" + (fileName == null ? "" : fileName + " ") + fileLineNumber + ")";
于 2012-08-21T14:08:24.593 に答える