タイプ別に.csファイルへのパスを見つける方法は?
関数のプロトタイプ:
string FindPath(Type);
「C:\Projects\.....\MyClass.cs」のようなものを返します
タイプ別に.csファイルへのパスを見つける方法は?
関数のプロトタイプ:
string FindPath(Type);
「C:\Projects\.....\MyClass.cs」のようなものを返します
.Net 4.5 では、リフレクション属性を使用できCallerFilePath
ます (MSDN から):
// using System.Runtime.CompilerServices
// using System.Diagnostics;
public void DoProcessing()
{
TraceMessage("Something happened.");
}
public void TraceMessage(string message,
[CallerMemberName] string memberName = "",
[CallerFilePath] string sourceFilePath = "",
[CallerLineNumber] int sourceLineNumber = 0)
{
Trace.WriteLine("message: " + message);
Trace.WriteLine("member name: " + memberName);
Trace.WriteLine("source file path: " + sourceFilePath);
Trace.WriteLine("source line number: " + sourceLineNumber);
}
// Sample Output:
// message: Something happened.
// member name: DoProcessing
// source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs
// source line number: 31
ありえない、そんな関係はない。クラスは部分的である可能性があるため、複数の異なるソース ファイルから取得することもできます。
すべてのクラスは、アセンブリ (.exe または .dll) にコンパイルされます。クラスが存在しない可能性があるため (.exe ファイルを別のマシンにコピーした場合)、クラスのソース ファイルへのパスを取得できないと思います。
ただし、実行中の現在のアセンブリ (.exe ファイル) へのパスを取得できます。この回答を確認してください:アセンブリ パスを取得する C#
string file = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;