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?注意,我的问题是如何在调试器中执行此操作。