オレ様のクラスも展開しろ

Visual Studio .NETデバッグ作業をしていると、変数の中身を表示する各種ウィンドウを活用すると思いますが、System.Drawing.Point 型などの表示が {X=10 Y=30} などと表示される。
これは式エヴァリュエータ(EE)の機能の1つであり、設定ファイルによって自由に追加削除が可能になっている。
EEの利用する設定ファイルはいくつかあり、標準的なインストール先だと、C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Packages\Debuggerに保存されている。

AutoExp.dat
Native Debugger用
mcee_cs.dat
C#
mcee_mc.dat
Managed C++
vjsee.dat
Visual J#用

となっていて、先頭に簡単な説明が記載されたテキストファイルとなっている。
たとえば前述の Point 型は

<System.Drawing.Point>=X=<x> Y=<y>

となっており、これは System.Drawing.Point 型の表示を X=<x> Y=<y> と表示する、という設定で、右の <x> と <y> の部分は System.Drawing.Point 型のメンバ名となっている。
みてわかるとおり基本的な書式は、「型=表示形式」となっています。

左辺の設定

左辺の型の部分には、オプションとして + と - を指定することができ、それぞれツリー表示される場合の「展開許可」と「展開禁止」となっている。
たとえば、前述のPoint型は X と Y が表示されれば十分なので、そのプロパティをツリー展開して表示する必要はないと考えるなら、- オプションを利用して

<System.Drawing.Point, ->=X=<x> Y=<y>

と記述することができる。

右辺の設定

右辺では< と > で囲まれていない部分は、そのまま出力に含まれる文字となり、囲まれている部分は左辺で指定した型に対するメンバの指定という意味をもつ。
左辺同様に、右辺のメンバにも指定できるオプションとして d, o, h の3文字が定義されている。
これらは目的のメンバを数値として表示するときの法の指定で、それぞれが10進法、8進法、16進法となっていて、8進法は 0、16進法は 0x を prefix として変換されるようになっている。
Point 型の座標を常に10進数で表記したい場合は、

<System.Drawing.Point>=X=<x, d> Y=<y, d>

と記述することができる。

その他

設定ファイルの先頭の説明によると、左辺にも < > で囲まない文字列を指定できることになっているのだが、そのような設定をするとどのような効果があるかは不明…。
また、Visual Basic については、

Visual Basic では、データ型の内容を意味のある形で表示するための自動展開規則がサポートされません。

だそうで。