2010-02-16 13 views
6

Digamos que tiene un MethodInfo, o cualquier otra subclase de MemberInfo para ese asunto, en C#. ¿Es posible recuperar el nombre del archivo en el que fue declarado y posiblemente los números de línea para donde comienza la declaración? Esta información debe existir en algún lugar de los metadatos del modo de depuración, ya que la creación de una instancia de StackTrace le brindará esa información. ¿Debo buscar en System.Diagnostics en lugar de System.Reflection?¿Es posible recuperar información del archivo mediante reflejo en C#?

Respuesta

1

Debe utilizar las clases del Símbolo de System.Diagnostics para obtener información de los archivos .pdb. Aquí es un buen blog en él

Algo como esto podría funcionar:

using System; 
using System.Diagnostics; 

class Foo 
{ 
static void Main() 
{ 
    SmallFunc(); 
} 

static void SmallFunc() 
{ 
    PrintStack(); 
} 
static void PrintStack() 
{ 
    StackTrace st = new StackTrace(true); // true means get line numbers. 
    foreach(StackFrame f in st.GetFrames()) { 
     Console.Write(f); 
    } 
} 
} 
Cuestiones relacionadas