我有一个属性的类,我需要拦截debuggind评估。
我不知道如何做到这一点。
class Foo
{
public bool DebugIsAllow { get; set; } = false;
public string Value
{
get
{
if (!DebugIsAllow && IsDebugging()) throw new Exception();
return "ok";
}
}
public bool IsDebugging()
{
return ?????
}
public void Main()
{
var v = Value;
Breakpoint here !!!
DebugIsAllow = true;
Breakpoint here !!!
}
}
在第一个断点处,如果我为'v'和'Value'添加间谍,我想在监视窗口中看到:v =“ok”和Value =“Exception”
在第二次破坏时,我想在观察窗口看到:v =“ok”和Value =“ok”
感谢您的帮助。
编辑:
我尝试使用“System.Diagnostics.Debugger.IsAttached”,但调试器始终是附加的。不仅在观察窗口的IDE类属性时。
答案 0 :(得分:0)
使用[DebuggerDisplay]
属性实现自定义显示方案以在调试器中使用。例如,Lazy<T>
类使用它来停止调试,导致延迟评估运行。
答案 1 :(得分:-1)
您可以使用此编译器指令,假设已定义DEBUG常量:
public bool IsDebugging()
{
#if DEBUG
return true;
#else
return false;
#endif
}