Làm cách nào để tìm tên đầy đủ của phương thức gọi trong C#. Tôi đã thấy các giải pháp:Cách tìm tên ĐẦY ĐỦ của phương thức gọi C#
How I can get the calling methods in C#
How can I find the method that called the current method?
Get Calling function name from Called function
Nhưng họ chỉ cung cấp cho tôi những cấp cao nhất. Hãy xem xét ví dụ:
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);
}
}
}
Điều này chỉ đơn giản là kết quả 'Chính' Làm cách nào để in 'Sandbox.Program.Main'?
Trước khi mọi người bắt đầu hỏi lý do tại sao tôi cần phải sử dụng điều này, nó cho một khung đăng nhập đơn giản mà tôi đang làm việc.
EDIT
Thêm vào trả lời Matzi của:
Dưới đây là giải pháp:
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);
}
}
}
Tạo 'Sandbox.Program.Main' như nó nên
thể trùng lặp của [Sử dụng System.Reflection để Nhận một phương pháp Full Name] (http://stackoverflow.com/questions/2968352/using-system-reflection-to-get-a-methods-full -name) – user7116