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.csDebuggerDisplayAttribute<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以降には、ビジュアライザーと呼ばれるものがあります。自分で作成することもできます。

于 2012-10-03T08:44:45.287 に答える