次の方法で共有


DebuggerTypeProxy 属性を使用して表示する型をデバッガーに指示する (C#、Visual Basic、C++/CLI)

DebuggerTypeProxyAttribute は、型のプロキシ (スタンドアロン) を指定し、デバッガー ウィンドウでの型の表示方法を変更します。 プロキシを持つ変数を表示すると、プロキシはディスプレイ内の元の型を表 します。 デバッガー変数ウィンドウには、プロキシ型のパブリック メンバーのみが表示されます。 プライベート メンバーは表示されません。

この属性は、次の場合に適用できます。

  • 構造体
  • クラス
  • アセンブリ

ネイティブ コードの場合、この属性は C++/CLI コードでのみサポートされます。

型プロキシ クラスには、プロキシが置き換える型の引数を受け取るコンストラクターが必要です。 デバッガーは、ターゲット型の変数を表示する必要があるたびに、型プロキシ クラスの新しいインスタンスを作成します。 これはパフォーマンスに影響を与える可能性があります。 その結果、コンストラクターで不要な作業が発生しないようにします。

パフォーマンスの低下を最小限に抑えるために、式エバリュエーターは、ユーザーがデバッガー ウィンドウで +記号をクリックするか、 DebuggerBrowsableAttributeを使用して型を展開しない限り、型の表示プロキシの属性を調べません。 そのため、属性を表示の種類自体に配置しないでください。 属性は、表示タイプの本文で使用でき、使用すべきです。

型プロキシは、属性が対象とするクラス内のプライベート入れ子になったクラスにすることをお勧めします。 これにより、内部メンバーに簡単にアクセスできます。

DebuggerTypeProxyAttribute は継承できるため、基底クラスで型プロキシが指定されている場合は、派生クラスが独自の型プロキシを指定しない限り、派生クラスに適用されます。

アセンブリ レベルで DebuggerTypeProxyAttribute を使用する場合、 Target パラメーターは、置換するプロキシの型を指定します。

この属性を DebuggerDisplayAttribute および DebuggerTypeProxyAttributeと共に使用する方法の例については、「 DebuggerDisplay 属性の使用」を参照してください。

Important

[ 変数ウィンドウでオブジェクトの未加工構造を表示 する] オプションを選択した場合、 DebuggerDisplay 属性は無視されます。 この設定は、[ツール>オプション] ウィンドウの [>Debugging>General] セクションにあります。

Important

[ 変数ウィンドウでオブジェクトの未加工構造を表示 する] オプションを選択した場合、 DebuggerDisplay 属性は無視されます。 この設定は、[デバッグ>General] セクションの [ツール>オプション] ダイアログにあります。

DebuggerTypeProxy でのジェネリックの使用

ジェネリックのサポートは制限されています。 C# の場合、 DebuggerTypeProxy ではオープン型のみがサポートされます。 非構造化型とも呼ばれるオープン型は、型パラメーターの引数を使用してインスタンス化されないジェネリック型です。 構築された型とも呼ばれる閉じた型はサポートされていません。

オープン型の構文は次のようになります。

Namespace.TypeName<,>

DebuggerTypeProxyでジェネリック型をターゲットとして使用する場合は、この構文を使用する必要があります。 DebuggerTypeProxyメカニズムは、あなたのために型パラメーターを推測します。

C# のオープン型とクローズ型の詳細については、「 C# 言語仕様」セクション 20.5.2 オープン型とクローズ型を参照してください。

Visual Basic にはオープン型の構文がないため、Visual Basic で同じことを行うことはできません。 代わりに、開いている型名の文字列表現を使用する必要があります。

"Namespace.TypeName'2"