2

这里有一个关于在 KeyValuePair(TKey, TValue) 中覆盖 ToString() 的问题,这是不可能的。

我看到有一些属性类型,如 DebuggerDisplayAttribute、DebuggerTypeProxyAttribute,它们可以控制类型在调试器中的显示方式。我只使用调试器可视化工具。

从逻辑上讲,这些属性只能应用于用户定义的类(我认为部分类除外)。

那么有没有办法控制Visual Studio中内置(BCL).NET类型的调试结果呢?

编辑:为了让它更清楚一点,我主要对类型的字符串表示感兴趣。这有点“覆盖” ToString() 只是为了调试。

4

2 回答 2

5

前段时间我写了一篇关于阅读 SQL 异常转储的文章,我在其中使用了可视化工具System.Data.SqlClient.SqlParameter)。您可以阅读整篇文章以获取工作示例,但在您的情况下,需要执行以下步骤:

在文件夹C:\Users\<your login>\Documents\<your Visual Studio version>\Visualizers中有一个名为的特殊文件autoexp.cs,用于存储您的本地可视化设置(使用定义DebuggerDisplayAttribute)。如果找不到此文件,您可以安全地从<Visual Studio installation folder>\Common7\Packages\Debugger\Visualizers\Original\. 然后,您可以在此文件末尾附加一条新规则:

[assembly: DebuggerDisplay(@"\{MyKey = {Key}\}", Target = typeof(System.Collections.Generic.KeyValuePair<,>))]

最后需要重新编译文件:

csc /t:library autoexp.cs

并重新启动 Visual Studio。KeyValuePair 的新字符串表示应该出现在 VS 调试器中。

于 2012-10-03T11:50:43.047 回答
1

Visual Studio 2005 及更高版本具有称为Visualizers的东西。您可以尝试自己创作。

于 2012-10-03T08:44:45.287 回答