Silverlight Reflection | GetCurrentMethod с передаваемыми параметрами

StackOverflow https://stackoverflow.com/questions/4563948

Вопрос

Я хочу распечатать текущий вызов метода (вкл. Возвращаемое значение) на вывод 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)?

Это было полезно?

Решение

Поскольку вы используете его для отладки, есть вариант, используя Stacktrace и Stackframe Чтобы получить текущее имя метода, но вы не получите аргументы, и существует серьезный штраф за производительность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top