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)?

¿Fue útil?

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
scroll top