Cách duy nhất tôi có thể nghĩ đến là sử dụng lớp StackFrame. Tôi sẽ không khuyên bạn nên nó nếu bạn đang đối phó với mã hiệu suất quan trọng, nhưng bạn có thể sử dụng nó. Vấn đề duy nhất là, StackFrame cung cấp cho bạn tất cả các phương thức đã được gọi đến thời điểm này, nhưng không có cách nào dễ dàng để xác định phương thức nào trong số này là phương thức Hành động, nhưng có thể trong tình huống của bạn, bạn biết sẽ có bao nhiêu lớp được. Dưới đây là một số mẫu mã:
[HandleError]
public class HomeController : Controller
{
public void Index()
{
var x = ShowStackFrame();
Response.Write(x);
}
private string ShowStackFrame()
{
StringBuilder b = new StringBuilder();
StackTrace trace = new StackTrace(0);
foreach (var frame in trace.GetFrames())
{
var method = frame.GetMethod();
b.AppendLine(method.Name + "<br>");
foreach (var param in method.GetParameters())
{
b.AppendLine(param.Name + "<br>");
}
b.AppendLine("<hr>");
}
return b.ToString() ;
}
}