我有一个属性类,我需要拦截debuggind评估。如何通过IDE调试器检测评估
我不知道我该怎么做。
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”和“价值”加间谍,我希望看到在监视窗口中:V =“OK”和值=“异常”
而在第二我想在观察窗口看到:v =“ok”和Value =“ok”
谢谢你的帮助。
编辑:
我尝试用 “System.Diagnostics.Debugger.IsAttached” 但却调试器始终高度。不仅当IDE类属性通过监视窗口。
我们不知道您为什么需要这样做。考虑使用混淆器来让别人的生活更加困难。 –
如果相关,请考虑使用'[DebuggerDisplay]'属性(https://msdn.microsoft.com/zh-cn/library/x810d419.aspx)更改在Visual Studio工具窗口中呈现的内容,但它并未设计用于混淆,并且它可以很容易地解决。 –
它不适用于混淆器。实际上,这个属性附有缓存系统和远程呼叫系统。我不想调试器触发远程调用。但我想让它在缓存中获得价值。 属性[System.Diagnostics.DebuggerBrowsable]可以完全禁用评估。但在这种情况下,我可以轻松获得缓存中的值... –