Ala*_*jeu 2 c# debugging visual-studio-2015
特别是,检查Windows窗体对象,我想看到我的代码中定义的成员,而不总是看到基类中框架定义的数百个成员.
使用框架属性有多种内置方式(尽管其中没有一种特别可扩展).
[DebuggerDisplay]假设您的课程如下:
public class MyForm : Form
{
public int Foo { get; set; }
public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样添加[DebuggerDisplayAttribute]到类中:
[DebuggerDisplay("Foo = {Foo}, Bar = {Bar}")
public class MyForm : Form
{
public int Foo { get; set; }
public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在只显示Foo和Bar.
优势:仅显示您希望的成员.
缺点:您必须明确指定要显示的成员,并为稍后添加的每个属性重复该步骤.
[DebuggerTypeProxy]您可以定义应该在调试器中显示而不是真实类的代理类.
再说一次,假设你的班级看起来像这样
public class MyForm : Form
{
public int Foo { get; set; }
public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您现在可以继续定义一个代理类,该类仅公开您要显示的成员并将其应用于[DebuggerTypeProxyAttribute]类,如下所示:
[DebuggerTypeProxy(typeof(MyFormDebugView))]
public class MyForm : Form
{
public int Foo { get; set; }
public string Bar { get; set; }
}
public class MyFormDebugView
{
public int Foo { get; set; }
public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,你只能看到Foo和Bar在调试器中显示,而不是继承的成员Form.
优点:仅显示代理类中的成员.无需明确指定这些成员.
缺点:无论何时MyForm向调试器中添加新属性等,都必须调整代理类型.
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |