Silverlight Reflection | GetCurrentMethod mit bestandenen Parametern
-
14-10-2019 - |
Frage
Ich möchte den aktuellen Methodenaufruf (inkl. Rückgabewert) in die Visual Studio -Ausgabe wie folgt drucken:
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;
};
// [..]
}
Ich benutze dies manchmal, um mehr Informationen zu erhalten (z. B. eines Konverters, wie hier gezeigt) beim Debuggen. Das ist jedoch nur ein Kreisverkehr.
Gibt es eine Möglichkeit, es flexibler zu machen? So etwas wie GetCurrentArgumente (von methodInfo)?
Lösung
Da Sie es zum Debuggen verwenden, gibt es eine Option mit der Option Stacktrace und Stackframe Um den aktuellen Methodennamen zu erhalten, erhalten Sie jedoch nicht die Argumente, und es gibt eine schwerwiegende Leistungsstrafe.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow