Visual Studio 2010 - 中断任何更改对象属性的内容

Roo*_*ian 19 c# debugging visual-studio-2010 visual-studio

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

或者是否可以找出ASP.NET Webforms应用程序中的对象属性是否已更改?


更新:

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

Tim*_*mwi 13

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

public string SomeProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)

你可以像这样轻松改变它:

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

如果值实际上是字段而不是属性,您仍然可以将其更改为属性以实现相同的操作.

如果您无法访问声明该属性的代码,那么它就会变得更加困难.我个人所做的就是这个,但它有点费力:

  1. Program声明属性的类的类中声明一个公共静态字段.

  2. 在程序的早期,找到对其属性值更改的对象的引用,并将该引用放在此静态字段中.如有必要,请使用Reflection检索私有字段.

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

  4. 逐步执行代码,直到监视窗口中的值发生更改.

  • 要在自动实现的属性上设置断点,请参阅我的回答:http://stackoverflow.com/questions/2682613/cant-set-breakpoints-on-an-auto-property-setter-why/6713920#6713920 (2认同)