DebuggerTypeProxy 属性の使用
更新 : 2007 年 11 月
このトピックの内容は、次の製品に該当します。
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro/Team |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
DebuggerTypeProxyAttribute では、ある型のプロキシ (代理) を指定し、その型をデバッガ ウィンドウで表示する方法を変更します。プロキシを指定した変数を表示すると、元の型の代理としてプロキシが表示されます。デバッガの変数ウィンドウには、プロキシ型のパブリック メンバのみが表示されます。プライベート メンバは表示されません。
この属性は次の対象に適用できます。
構造体
クラス
アセンブリ
型プロキシ クラスには、プロキシで置換される型の引数を使用するコンストラクタが必要です。デバッガでは、対象となる型の変数を表示するときに、毎回、新しい型プロキシ クラスのインスタンスが作成されます。このとき、パフォーマンスに影響を及ぼすことがあります。そのため、コンストラクタでの作業は必要最小限に抑えます。
パフォーマンスの低下を最小限にするために、式エバリュエータでは、型の表示プロキシに関する属性はチェックされません。ただし、デバッガ ウィンドウで + 記号をクリックして型を展開したときや、DebuggerBrowsableAttribute を使用するときはチェックされます。そのため、表示型に属性を指定するのは避けます。属性は、表示型の本体で使用できるようにします。
型プロキシは、属性の対象となるクラスに入れ子にした、プライベート クラスにすることをお勧めします。こうすることで、内部のメンバに簡単にアクセスできます。
DebuggerTypeProxyAttribute をアセンブリ レベルで使用する場合は、プロキシに置換される型を Target パラメータで指定します。
DebuggerDisplayAttribute および DebuggerTypeProxyAttribute と共にこの属性を使用する方法の例については、「DebuggerDisplay 属性の使用」を参照してください。
ジェネリックと DebuggerTypeProxy の使用
ジェネリックのサポートは限定的です。C# では、DebuggerTypeProxy はオープン型のみをサポートします。オープン型 (構築されていない型とも呼ばれます) とは、その型パラメータの引数によってインスタンス化されていないジェネリック型のことです。クローズ型 (構築された型とも呼ばれます) は、サポートされていません。
オープン型の構文は次のようになります。
Namespace.TypeName<,>
DebuggerTypeProxy 内でジェネリック型を対象として使用する場合は、この構文を使用する必要があります。DebuggerTypeProxy の機構は、型パラメータを推論します。
C# のオープン型とクローズ型の詳細については、「C# 言語仕様」の「20.5.2 オープン型とクローズ型」を参照してください。
Visual Basic にはクローズ型の構文はないため、Visual Basic で同じ処理はできません。代わりに、オープン型の名前の文字列形式を使用する必要があります。
"Namespace.TypeName'2"