属性[DebuggerDisplay](DebuggerDisplayAttributeを使用)を使用すると、VS2010/2008のデバッガーで表示を定義できます。AutoExp.cs / .dllを変更することで、システムタイプやサードパーティタイプの表示を上書きすることもできます。
[assembly: DebuggerDisplay (@"\{Name = {Name} FullName = {FullName}}", Target = typeof (Type))]
内側の中括弧では、フィールド、プロパティ、およびメソッドを参照できます。拡張メソッドを参照することは可能ですか?
例として、たとえば。$SCG.Dictionary
の代わりに、より短いタイプ名を表示しようとしましたSystem.Collections.Generic.Dictionary
。これをAutoExp.csに追加しました:
using DbgDisp;
[assembly: DebuggerDisplay (@"\{Name = {Name} ShortName = {ShortName()}}", Target = typeof (Type))]
namespace DbgDisp {
public static class Ext {
public static string ShortName (this Type t) { return string.Format ("[{0}]", t.Name); }
} // Ext
} // DbgDisp
しかし、デバッガーは文句を言います:名前'ShortName'は現在のコンテキストに存在しません。
私は何かが足りないのですか、それともそこで拡張メソッドを使用することができないのですか?
オーバーライドできることはわかっていますToString ()
が、それは自分のタイプにのみ役立ちます。