每个委托都有一个名为的方法GetInvocationList()
,它返回已注册的所有实际委托.因此,假设委托类型(或事件)名为say MyDelegate
,并且处理程序实例变量已命名myDlgHandler
,您可以编写:
Delegate[] clientList = myDlgHandler.GetInvocationList(); foreach (var d in clientList) myDlgHandler -= (d as MyDelegate);
覆盖它可能为null的情况,
if(myDlgHandler != null) foreach (var d in myDlgHandler.GetInvocationList()) myDlgHandler -= (d as MyDelegate);