是否可以确定对属性的调用是来自IDE,即来自监视窗口,即时窗口等,而不是来自代码的正常调用?
Public ReadOnly Property Foo() As Object
Get
If CalledFromIDE Then
'Do something
Else
'Do something different
End If
End Get
End Property
我的第一个想法是检查堆栈跟踪,但IDE似乎直接挂接到属性而不在堆栈上添加任何内容。
编辑
至于问题背后的原因,我试图使用MS Coded UI框架编写一些自动WinForms测试,但调试体验是一场噩梦。 UI Test对象公开的属性不断超时(导致调试器分离),有些则完全崩溃了调试器。因此,我采用了here描述的类似方法,因为我已经在MS对象周围编写了一个包装器(隐藏了它的属性),而是在一个单独的线程中用超时来评估属性(将任何无法评估的属性列入黑名单。然后,成功的属性将在包装器中公开。
这极大地改善了调试体验,但是当在非调试情况下调用属性时,我希望它们能够正常评估(即没有超时)。