Silverlight Reflection | GetCurrentMethod с передаваемыми параметрами
-
14-10-2019 - |
Вопрос
Я хочу распечатать текущий вызов метода (вкл. Возвращаемое значение) на вывод 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 Чтобы получить текущее имя метода, но вы не получите аргументы, и существует серьезный штраф за производительность.
Не связан с StackOverflow