Reflexión Silverlight | GetCurrentMethod con parámetros pasados
-
14-10-2019 - |
Pregunta
Quiero imprimir el método actual de llamadas (incl valor de retorno.) A la salida de Visual Studio como esto:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
Func<object, object> ret = (value) =>
{
#if DEBUG
var debug = new StringBuilder();
debug.Append("MyConverter.Convert([");
debug.Append(values.Sum(v => (v != null ? v.ToString() : "null") + ',', null, v => v != null ? v.ToString() : "null"));
debug.Append("], " + targetType.ToString() + ", " + parameter.ToString() + ", " + culture.DisplayName + ") =" + value.ToString() + ";");
Debug.WriteLine(debug.ToString());
#endif
return value;
};
// [..]
}
Estoy usando esto a veces para conseguir más información (por ejemplo, de un convertidor como se muestra aquí) durante la depuración. Sin embargo, eso es sólo una manera indirecta.
¿Hay alguna manera de hacerlo más flexible? Algo así como GetCurrentArguments (de MethodInfo)?
Solución
Desde que está utilizando para la depuración no es una opción mediante la StackTrace y StackFrame Para obtener el nombre del método actual, pero no vas a encontrar los argumentos, y hay una penalización de rendimiento grave.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow