Отражение Silverlight |GetCurrentMethod с переданными параметрами - PullRequest
0 голосов
/ 30 декабря 2010

Я хочу напечатать текущий вызов метода (включая возвращаемое значение) в вывод Visual Studio следующим образом:

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

 // [..]
}

Я использую это иногда для получения дополнительной информации (например, из конвертера, как показано здесь) во время отладки. Тем не менее, это просто окольный путь.

Есть ли способ сделать это более гибким? Что-то вроде GetCurrentArguments (из MethodInfo)?

1 Ответ

1 голос
/ 17 марта 2011

Так как вы используете его для отладки, есть опция, использующая StackTrace и StackFrame Чтобы получить имя текущего метода, но вы не получите аргументы, и существует серьезное снижение производительности.

...