C#で呼び出し元のメソッドの完全な名前を見つけるにはどうすればよいですか? 私は解決策を見てきました:
現在のメソッドを呼び出したメソッドを見つけるにはどうすればよいですか?
しかし、彼らは私にトップレベルしか与えません。例を考えてみましょう:
namespace Sandbox
{
class Program
{
static void Main(string[] args)
{
test();
}
static void test()
{
var stackTrace = new StackTrace();
var methodBase = stackTrace.GetFrame(1).GetMethod();
Console.WriteLine(methodBase.Name);
}
}
}
これは単に「Main」を出力します。「Sandbox.Program.Main」を印刷するにはどうすればよいですか?
これは、私が取り組んでいる単純なログ フレームワーク用です。
Matziの回答に追加:
解決策は次のとおりです。
namespace Sandbox
{
class Program
{
static void Main(string[] args)
{
test();
}
static void test()
{
var stackTrace = new StackTrace();
var methodBase = stackTrace.GetFrame(1).GetMethod();
var Class = methodBase.ReflectedType;
var Namespace = Class.Namespace; // Added finding the namespace
Console.WriteLine(Namespace + "." + Class.Name + "." + methodBase.Name);
}
}
}
本来のように「Sandbox.Program.Main」を生成します。