Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过IDE调试器检测评估_C#_Debugging - Fatal编程技术网

C# 如何通过IDE调试器检测评估

C# 如何通过IDE调试器检测评估,c#,debugging,C#,Debugging,我有一个带有属性的类,我需要截获debuggind求值 我不知道我怎么能做到 class Foo { public bool DebugIsAllow { get; set; } = false; public string Value { get { if (!DebugIsAllow && IsDebugging()) throw new Exception(); retu

我有一个带有属性的类,我需要截获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”添加spy,我希望在监视窗口中看到:v=“ok”和Value=“Exception”

在第二个断点,我想在手表窗口中看到:v=“ok”和Value=“ok”

谢谢你的帮助


编辑:


我尝试使用“System.Diagnostics.Debugger.IsAttached”,但调试器总是附加的。不仅当IDE类属性按监视窗口显示时。

如果定义了调试常量,则可以使用此编译器指令:

public bool IsDebugging()
{
#if DEBUG
    return true;
#else
    return false;
#endif
}

使用
[DebuggerDisplay]
属性来实现在调试器中使用的自定义显示方案。例如,
Lazy
类使用它来停止调试,从而导致延迟计算运行


不,它不起作用。“DEBUG”constante只会说它编译为DEBUG或release。如果这是正常的执行或IDE调试调用,就不需要了……我们不知道您为什么需要这样做。考虑使用混淆器来让某人的生活变得更加困难。如果相关的话,考虑使用<代码> [调试程序显示] < /Cord>属性()来改变VisualStudio工具窗口中所呈现的内容,但是它不是被设计用于混淆的,而且它可以很容易地工作。这不是混淆器。实际上,该属性与缓存系统和远程调用系统相连。我不想让调试器触发远程调用。但我希望允许它在缓存中获取值。[System.Diagnostics.DebuggerBrowsable]属性可以完全禁用评估。但在这种情况下,我可以很容易地在缓存中获取值……最后,我想我将使用DebuggerTypeProxy属性。但是它仍然是黑客的一部分,因为在我的例子中,求值太慢了,如果另一个类使用这个属性,它将不会利用这个属性,我将在IDE中出错。并且不会在所有类上添加此属性。。。