Domanda

Voglio stampare il metodo di chiamata in corso (incl valore di ritorno.) Allo Studio Uscita visiva in questo modo:

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;
    };

 // [..]
}

Sto usando questo a volte per ottenere maggiori informazioni (ad esempio da un convertitore come mostrato qui) durante il debug. Tuttavia, questo è solo un modo indiretto.

C'è un modo per farlo più flessibile? Qualcosa di simile GetCurrentArguments (da MethodInfo)?

È stato utile?

Soluzione

Dal momento che lo si utilizza per il debug v'è un'opzione utilizzando la StackTrace e StackFrame per ottenere il nome del metodo corrente, ma non otterrete gli argomenti, e non v'è una riduzione delle prestazioni gravi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top