当前位置: 首页 > 编程语言 > C#

如何删除所有eventhandler分享

时间:2023-04-10 11:31:11 C#

C#学习教程:如何删除所有事件处理程序和一个事件处理程序公共事件MyEventHandlerSomething;我们添加多个事件..for(intx=0;x<10;x++){this.Something+=HandleSomething;我的问题是..如何从事件处理程序中删除所有方法,假设一个人不知道它已被添加10次(或更多或更少)次?只需将事件设置为null:this.Something=null;它将注销所有事件处理程序。作为一个伪想法:C#5classMyDelegateHelperClass{publicstaticvoidRemoveEventHandlers(MulticastDelegatem,Expression>expr){EventInfoeventInfo=((MemberExpression)expr.Body).MemberasEventInfo;委托[]订阅者=m.GetInvocationList();委托currentDelegate;对于(inti=0;iUsage:MyDelegateHelperClass.RemoveEventHandlers(MyDelegate,()=>myClass.myDelegate);C#6publicstaticvoidRemoveEventHandlers(thisMulticastDelegatem){stringeventName=nameof(m);EventInfoeventInfo=m.GetType().ReflectingType.GetEvent(eventName,BindingFlags.Public|BindingFlags.Instance|BindingFlags.Static|BindingFlags.NonPublic);Delegate[]subscribers=m.GetInvocationList();DelegatecurrentDelegate;for(inti=0;i使用方法:以上就是C#学习教程:如何删除所有eventhandler分享的内容,如果对大家有用,还需要进一步了解C#学习教程,希望大家多多关注---MyDelegate.RemoveEventHandlers();本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,转载请注明出处: