可能ですが、私が知っている '魔法'の方法はありません。これをサポートするすべてのタイプにメソッドを追加する必要があります。また、.pdbファイルが利用可能な場合にのみ機能します。 _GetSourceFileNameは、それなしでnullを返します。
using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
DumpFilenameForType(typeof(A));
DumpFilenameForType(typeof(B));
if (System.Diagnostics.Debugger.IsAttached)
{
System.Console.Write("Press any key to continue . . . ");
System.Console.ReadKey();
}
}
static void DumpFilenameForType(Type t)
{
MethodInfo mi = t.GetMethod("_GetSourceFileName", BindingFlags.Static | BindingFlags.NonPublic);
if (mi != null)
Console.WriteLine("Type '{0}' is located in '{1}'", t.FullName, mi.Invoke(null, null));
else
Console.WriteLine("Type '{0}' does not provide method _GetSourceFileName", t.FullName);
}
}
//他のいくつかのファイル
public class A
{
static string _GetSourceFileName()
{
return new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileName();
}
}
//さらに別の他のファイル
public class B
{
static string _GetSourceFileName()
{
return new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileName();
}
}
あなたがソースを持っていない場合、私はこれが動作するようになっているか理解していません実行時のコード。 –
タイプを複数のファイルに分割することができます。 – Bryan
あなたがこの情報を入手したい理由を教えてもらえると助かりますか? – Bryan