如何在 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”。