2010-04-23 22 views
7

Tôi muốn nhận nhật ký chi tiết về dấu vết ngăn xếp của mình. Tôi có thể nhận được một StackFrame và sau đó phương pháp và sau đó nhận được tất cả các thông số của phương pháp đó. Cũng giống như đoạn mã sau:Tôi có thể lấy phương thức biến cục bộ thông qua một dấu vết ngăn xếp trong C#?

  StackTrace st = new StackTrace(); 
      StackFrame[] sfs = st.GetFrames(); 
      foreach (StackFrame sf in sfs) 
      { 
       MethodBase method = sf.GetMethod(); 
       ParameterInfo[] pis = method.GetParameters(); 
       foreach (ParameterInfo pi in pis) 
       { 
         .... 
       } 
       Console.WriteLine(method.Name); 
      } 

Nhưng làm thế nào tôi có thể nhận được các biến địa phương Thông tin trong vòng một phương pháp?

Ai đó có thể làm sáng tỏ tôi?

Rất cám ơn.

Trả lời

3

Bạn có thể muốn xem xét LocalVariableInfo.

Ví dụ fom MSDN // Nhận thông tin thân của phương pháp.

MethodInfo mi = typeof(Example).GetMethod("MethodBodyExample"); 
MethodBody mb = mi.GetMethodBody(); 
Console.WriteLine("\r\nMethod: {0}", mi); 

// Display the general information included in the 
// MethodBody object. 
Console.WriteLine(" Local variables are initialized: {0}", 
    mb.InitLocals); 

foreach (LocalVariableInfo lvi in mb.LocalVariables) 
{ 
    Console.WriteLine("Local variable: {0}", lvi); 
} 
+0

Cảm ơn Filip. Chỉ là một câu hỏi nữa, tôi có thể lấy tên/loại/giá trị của các biến cục bộ không? – smwikipedia

+1

@smwikipedia: không, bạn không thể :) ít nhất không có trong mã được quản lý. Nếu bạn sử dụng các API lược tả không được quản lý, nó có thể hoạt động, nhưng nó không phải là một công việc dễ dàng. –

+1

Sẽ không có ý nghĩa gì khi nhận được giá trị của biến cục bộ vì bạn đang kiểm tra nó ngoài phạm vi. –

Các vấn đề liên quan