¿Hay alguna manera de usar la reflexión .NET para capturar los valores de todos los parámetros/variables locales?Estado del método de captura usando Reflection
Respuesta
Usted podría conseguir en esta información usando el CLR debugging API aunque no será un par simple de líneas para extraerlo.
muestra del depurador gestionado: http://www.microsoft.com/downloads/details.aspx?familyid=38449a42-6b7a-4e28-80ce-c55645ab1310&displaylang=en –
La reflexión no se utiliza para capturar información de la pila. Lee la Asamblea.
Es posible que desee echar un vistazo a StackTrace
http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx
Buen artículo aquí:
http://www.codeproject.com/KB/trace/customtracelistener.aspx
El artículo de CodeProject muestra los nombres de los parámetros, pero no los valores –
Reflection le dirá el tipo de parámetros que tiene un método, pero no ayudará a descubrir sus valores durante una invocación en particular. La reflexión no te dice nada sobre las variables locales.
Necesita el tipo de API que utiliza el depurador para acceder a este tipo de información.
No creo que esto sea posible, puede obtener el método y sus parámetros mirando el StackTrace.
System.Diagnostics.StackTrace sTrace = new System.Diagnostics.StackTrace(true);
for (Int32 frameCount = 0; frameCount < sTrace.FrameCount; frameCount++){
System.Diagnostics.StackFrame sFrame = sTrace.GetFrame(frameCount);
System.Reflection.MethodBase thisMethod = sFrame.GetMethod();
if (thisMethod == currentMethod){
if (frameCount + 1 <= sTrace.FrameCount){
System.Diagnostics.StackFrame prevFrame = sTrace.GetFrame(frameCount + 1);
System.Reflection.MethodBase prevMethod = prevFrame.GetMethod();
}
}
}
no sé cómo es posible utilizando la reflexión, pero buscar en el uso de tejido. SpringFramework.Net le permite definir puntos de corte que pueden interceptar llamadas a métodos. Otros probablemente lo hagan también.
Aquí hay un enlace al interceptor "BeforeAdvice" http://www.springframework.net/docs/1.2.0-M1/reference/html/aop.html#d0e8139
La gente de secondlife suspenden guiones y los mueven entre los servidores. Eso implica que deben capturar el estado de un script en ejecución, incluidos los valores de las variables en la pila de llamadas.
Su lenguaje de scripts se ejecuta en mono, una implementación de código abierto del tiempo de ejecución de .NET. Dudo que su solución se aplique al tiempo de ejecución regular .NET, pero el video of the presentation on how they did it (saltar a la segunda mitad) podría ser interesante.
- 1. Firma del método real usando Reflection
- 2. Código de estado del método FTPWebRequest.GetResponse()
- 3. ¿Cómo invoco un método estático privado usando reflection (Java)?
- 4. Reflection MethodInfo.Invoke() capturas excepciones desde el interior del método
- 5. Anulación de un método privado con Reflection
- 6. Reflection GetMethod. seleccione un método más específico
- 7. estado de captura 404 con jQuery AJAX
- 8. Usar Reflection para llamar a un método de una propiedad
- 9. ¿Usando Reflection para establecer un valor de variable estático antes de la inicialización del objeto?
- 10. C# Tipo Casting en tiempo de ejecución usando Reflection
- 11. Cómo usar Reflection para invocar un método sobrecargado en .NET
- 12. Usando captura sin argumentos
- 13. Scala: ¿Cómo puedo instanciar dinámicamente un objeto e invocar un método usando reflection?
- 14. ¿Cómo decir que un método tiene un argumento varargs usando reflection?
- 15. Acceso al método protegido en caso de prueba usando Java Reflection
- 16. Reflection Type vs TypeDescriptor
- 17. Usando finalmente en lugar de captura
- 18. Usar objeto de clase en diferentes versiones del mismo ensamblado usando Reflection
- 19. Estado de devolución del método: bool, string, const ... (PHP)
- 20. Encontrar una clase de enumeración usando Reflection en Java
- 21. C# Reflection Indexed Properties
- 22. scala reflection: getDeclaringTrait?
- 23. Reflection & Parameters en C#
- 24. Llamadas al método de captura en Java
- 25. Reflection - get property name
- 26. ¿Cómo crear una instancia de enum usando reflection en java?
- 27. scala reflection
- 28. Salida del subproceso de captura
- 29. Captura de micrófonos usando Html 5 y difusión usando socket.io
- 30. Método para capturar una captura de pantalla del navegador del usuario para ayudar a informar errores
¿Puede proporcionar un caso de uso de lo que está tratando de lograr? – Alex