Riflessione Silverlight | GetCurrentMethod con parametri passati
-
14-10-2019 - |
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)?
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