c# - Visual Studio 2010 - 打破任何改变对象属性的东西

标签 c# visual-studio debugging visual-studio-2010

是否有可能在 Visual Studio 2010 中中断任何更改对象属性的内容(例如方法)?

或者是否有可能查明对象属性是否在 ASP.NET Webforms 应用程序中发生了变化?


更新:

可以在以下位置找到正确答案:http://stackoverflow.com/questions/2682613/cant-set-breakpoints-on-an-auto-property-setter-why/6713920#6713920

最佳答案

如果您可以控制声明该属性的代码,那么您当然可以在 setter 中放置一个断点。即使它当前是一个自动实现的属性,例如:

public string SomeProperty { get; set; }

你可以很容易地改变它:

private string _someProperty;
public string SomeProperty {
    get { return _someProperty; }
    set {
        // Set breakpoint here, or type Debugger.Break();
        _someProperty = value;
    }
}

如果该值实际上是一个字段而不是一个属性,您仍然可以将其更改为一个属性来实现相同的目的。

如果您无法访问声明该属性的代码,那么它会更难一些。我个人是这样做的,但是有点费力:

  1. 在声明属性的类型的 Program 类中声明一个公共(public)静态字段。

  2. 在程序的早期,找到对其属性值更改的对象的引用,并将该引用放入此静态字段中。如有必要,使用反射来检索私有(private)字段。

  3. 在调试时将 global::MyNamespace.Program.MyField.ImportantProperty 添加到 Watch 窗口。

  4. 逐步执行代码,直到监 window 口中的值发生变化。

关于c# - Visual Studio 2010 - 打破任何改变对象属性的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3600186/

相关文章:

c# - 什么是 linq "best practices"

c# - 使用 CUI 测试生成器测试 winform 应用程序上的接受按钮

c# - 我该如何解决 "The query results cannot be enumerated more than once"?

debugging - 段错误行数

Javascript - 停止函数执行函数

c# - 静默安装 Dot net 4.5 作为依赖项

c# - 具有敏感数据的 Sitecore WFFM

windows - 防止 MIDI 驱动程序在 MS Surface 4 上休眠

visual-studio - Visual Studio 2010 Premium 是否包含契约(Contract)工具?

python - 如何调试 App Engine 应用程序?