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

War es hilfreich?

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