Атрибут [DebuggerDisplay] ( Использование DebuggerDisplayAttribute ) позволяет определять отображение в отладчике VS 2010 / 2008 г. Изменяя AutoExp.cs / .dll, я могу даже переопределить отображение системных типов и сторонних типов, например,
[assembly: DebuggerDisplay (@"\{Name = {Name} FullName = {FullName}}", Target = typeof (Type))]
Во внутренних фигурных скобках я могу ссылаться на поля, свойства и методы. Можно ли ссылаться на методы расширения ?
В качестве примера я попытался отобразить более короткие имена типов, например $ SCG.Dictionary
вместо System.Collections.Generic .Словарь
. Я добавил это в 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 ()
, но это помогает только для моих собственных типов.