【发布时间】:2011-04-09 10:01:54
【问题描述】:
属性 [DebuggerDisplay] (Using DebuggerDisplayAttribute) 允许在 VS 2010/2008 的调试器中定义显示。通过修改 AutoExp.cs/.dll,我什至可以覆盖系统类型和 3rd 方类型的显示,例如
[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 (),但这仅对我自己的类型有帮助。
【问题讨论】:
-
当然,在调试显示上下文中执行我自己的代码的其他一些聪明的方法也会很有趣:)
-
这帮助我创建了一个用于调试的自定义显示字符串。可以对密封类使用扩展。根据网站政策,seesharpers 的答案应在此处标记为已接受的答案:meta.stackexchange.com/questions/62252/…
标签: c# visual-studio-2010 extension-methods debuggervisualizer debuggerdisplay