C# 检查是否已附加特定的事件处理程序方法
关于这个问题,, 但不同的是,我只想知道事件是否附加了特定的方法。所以可能还有其他附加的方法,但我只想知道是否存在特定的方法 我的环境是C#in dotnet 4.0 例如 这可能吗?不可能。你不能。C# 检查是否已附加特定的事件处理程序方法,c#,.net,events,c#-4.0,event-handling,C#,.net,Events,C# 4.0,Event Handling,关于这个问题,, 但不同的是,我只想知道事件是否附加了特定的方法。所以可能还有其他附加的方法,但我只想知道是否存在特定的方法 我的环境是C#in dotnet 4.0 例如 这可能吗?不可能。你不能。 Event.GetInvocationList().Any(x => x.Method.Name.Equals("yourmethodname")); event关键字是为了阻止你做你想做的事情而明确发明的。它使事件的委托对象不可访问,因此没有人可以干扰事件处理程序 资料来源: 使用Ge
Event.GetInvocationList().Any(x => x.Method.Name.Equals("yourmethodname"));
event关键字是为了阻止你做你想做的事情而明确发明的。它使事件的委托对象不可访问,因此没有人可以干扰事件处理程序
资料来源:
使用
GetInvocationList
方法对学员进行循环。此处延迟回答。我相信Parimal Raj的回答是正确的,因为我无法找到直接访问事件的方法。但是,我创建了两种方法来解决这个问题:
Event -= MyMethod1;
Event += MyMethod1;
if(control.Tag == null)
{
//ony added once, when tag is null
control.TextChanged += new EventHandler(validate);
control.Tag = new ControlTag();
}
可能重复:啊,是的。。。可以用这种方法感谢(这个问题的第一个答案)或者重复感谢是的,这是我的印象。不知道是否有办法解决这个问题。根据其他帖子的印象,GetInvocationList并不总是可访问的…它是框架的一部分。完全可以接受。不可接受的是草率的代码,它错误地实现了它,并且任性地留下对象。一定要处理好你的课程。对于您提出的问题,这是一种完全可以接受的做法。“它是框架的一部分。完全可以接受。”我的意思是,如果事件来自第三方组件,您可能无权调用GetInvocationList()。与可接受性不同。GetInvocationList()仅在声明事件的类中可用。。我如何在另一个类中使用它(例如,我正在使用它);我需要在Monitor类中使用它来标识有多少个事件处理程序与一个事件关联。。我该怎么办?
Event -= MyMethod1;
Event += MyMethod1;
if(control.Tag == null)
{
//ony added once, when tag is null
control.TextChanged += new EventHandler(validate);
control.Tag = new ControlTag();
}