我想将当前方法调用(包括返回值)打印到类似的视觉工作室输出:

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