|
1
3
您的工作假设是调试器可以跟踪变量更改。它不能。 对于非托管代码,处理器有专用的调试寄存器,允许设置数据断点。最多提供三个。当它看到一个特定的内存位置被写入时,就会产生一个硬件中断。然而,在托管代码中,这个非常有用的特性是不可用的。垃圾收集器与它完全不兼容,它移动对象,给它们另一个地址。 托管调试器确实支持断点上的“命中时”条件,允许您将信息转储到输出窗口。但是,这需要一个断点,它不能由变量值的更改触发。它也 真正地 由于调试器在执行条件之前实际上进入了中断状态,因此会减慢代码执行速度。 放置这样一个断点的明显位置是在属性设置器中。这就是在代码中实现这个特性所需要的。例如,可以使用跟踪类在该setter中执行任何您想要的操作。 |
|
|
2
3
为了补充Marc所说的内容,如果你想为很多属性和方法做这些,你可能需要检查面向方面的编程技术和库,比如Postshap。 |
|
|
3
1
托管调试器使用
|
|
4
0
唯一明智的方法就是 没有 调试器应该是:不要使用变量,而是使用属性,并且(可能是有条件地)向setter添加跟踪:
显然,这不能用于 任意的 字段/变量。 |
|
|
5
0
正如其他人提到的,这种机制只有在使用属性时才有意义。在.NET中,您可以使用
有关如何实现它的示例,请参见
引用的文章明确讨论了Windows窗体,但您没有绑定到该窗体(接口实际上是在
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |