Tiborg
Tiborg

Reputation: 2305

Control the way .NET BCL types are shown in the debugger (interested in KeyValuePair(TKey, TValue) )

There's a question here regarding the overriding of ToString() in KeyValuePair(TKey, TValue), which it's not possible.

I saw there are some attribute types like DebuggerDisplayAttribute, DebuggerTypeProxyAttribute which can control the way a type is displayed in the debugger. I only used debugger visualizers.

Logically, these attributes can only be applied to user-defined classes (except for partial classes I think).

So is there any way to control the debugging result of a built-in (BCL) .NET type in Visual Studio?

EDIT: To make it a little bit clearer, I'm mainly interested in the string representation of the type. It's sort of 'overriding' ToString() just for debugging.

Upvotes: 2

Views: 327

Answers (2)

Sebastian
Sebastian

Reputation: 3874

Some time ago I wrote a post about reading SQL exception dumps where I used the visualizer for System.Data.SqlClient.SqlParameter). You may read the whole post for a working example but in your case following steps are required:

In folder C:\Users\<your login>\Documents\<your Visual Studio version>\Visualizers there is a special file named autoexp.cs which stores your local visualizer settings (defined using DebuggerDisplayAttribute). If you can’t find this file you can safely copy it from <Visual Studio installation folder>\Common7\Packages\Debugger\Visualizers\Original\. You can then append a new rule by the end of this file:

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

Finally you need to recompile the file:

csc /t:library autoexp.cs

and restart Visual Studio. You new string representation of the KeyValuePair should appear in VS debugger.

Upvotes: 5

moribvndvs
moribvndvs

Reputation: 42497

Visual Studio 2005 and later have something called Visualizers. You could attempt to author your own.

Upvotes: 1

Related Questions