Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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# 有没有办法查看VS2013调试器中向事件添加了多少方法?_C#_Wpf_Visual Studio_Debugging - Fatal编程技术网

C# 有没有办法查看VS2013调试器中向事件添加了多少方法?

C# 有没有办法查看VS2013调试器中向事件添加了多少方法?,c#,wpf,visual-studio,debugging,C#,Wpf,Visual Studio,Debugging,我对这个堆栈溢出问题的答案感到困惑: 我正在逆向工程一些代码,包括这一行: IsVisibleChanged += delegate { UpdateReallyLoopRendering(); }; 。。。其中IsVisibleChanged是UIElement: public event DependencyPropertyChangedEventHandler IsVisibleChanged 我担心有多少方法被添加到它的调用列表中,并且其中一些方法可能是重复的,所以我想在调试器中查

我对这个堆栈溢出问题的答案感到困惑:

我正在逆向工程一些代码,包括这一行:

IsVisibleChanged += delegate { UpdateReallyLoopRendering(); };
。。。其中IsVisibleChanged是UIElement:

public event DependencyPropertyChangedEventHandler IsVisibleChanged
我担心有多少方法被添加到它的调用列表中,并且其中一些方法可能是重复的,所以我想在调试器中查看调用列表中有哪些项,或者至少有多少项。上述S.O.问题的答案显示了在QuickWatch窗口中执行此操作的示例,但其周围的文本被划掉,但仍然存在。答案中未被划掉的部分似乎表示这是不可能的

因此,是否有办法查看或至少获得IsVisibleChanged调用列表中的项目计数

编辑:此问题被标记为的重复项,但我不认为这是重复项,因为

答:我的问题是关于微软UIElement的


B:我的问题是如何在调试器中执行此操作,您可以委托.GetInvocationList()方法。请参见下面的示例代码:

public class Program
{
    public static void Main()
    {
        Test t = new Test();
        t.Click += Click_1;
        t.CheckInvocationList();
    }

    private static void Click_1(object sender, EventArgs e) {}
}

public class Test
{
    public event EventHandler Click;

    public void CheckInvocationList()
    {
        var t = Click;
        if(t != null) 
        {
            var methods = t.GetInvocationList();
            Console.WriteLine(methods.Length); // Output = 1
        }
    }
}

您可以委托.GetInvocationList()方法。请参见下面的示例代码:

public class Program
{
    public static void Main()
    {
        Test t = new Test();
        t.Click += Click_1;
        t.CheckInvocationList();
    }

    private static void Click_1(object sender, EventArgs e) {}
}

public class Test
{
    public event EventHandler Click;

    public void CheckInvocationList()
    {
        var t = Click;
        if(t != null) 
        {
            var methods = t.GetInvocationList();
            Console.WriteLine(methods.Length); // Output = 1
        }
    }
}

我如何将你的建议应用到我的案例中?如果我尝试执行IsVisibleChanged.GetInvocationList(),编译器会指出IsVisibleChanged只能出现在+=或-=的左侧。如何将您的建议应用于我的案例?如果我尝试执行IsVisibleChanged.GetInvocationList(),编译器会指出IsVisibleChanged只能出现在+=或-=的左侧。它如何重复?“这个问题已经有了答案”的例子是针对一个自己制作的事件处理程序——如何将其应用于UIElement?注意,我的问题是如何在调试器中执行此操作。它如何重复?“这个问题已经有了答案”的例子是针对一个自己制作的事件处理程序——如何将其应用于UIElement?注意,我的问题是如何在调试器中执行此操作。