Ibr*_*taz 6 c# reflection delegates winforms
我想知道如何从父委托的调用列表中删除单个委托.
<DelegateName>.RemoveAll();
Run Code Online (Sandbox Code Playgroud)
现在我可以删除所有,这将只是为了让想法运动,看看它应该是否应该工作,但任何被删除的代表将需要在RunTime再次添加!
所以:......
foreach(Delegate d in <DelegateName>.getInvocationList)
{ // do something with 'D'?? }
Run Code Online (Sandbox Code Playgroud)
现在我可以访问'D',我可以将它放入.Remove(),但它需要两个参数??? 我能得到一些帮助吗?
最后,一旦代理被删除,再次重新添加它的最佳方法是什么?所以我认为反思可能会在这方面发挥作用,但对你们来说.
更新:
本质上,有一个全局委托,有许多事件存在于不同的winforms类中,这些类是它的实例.所有这些事件都有一个处理事件的处理程序.一直在顶部的委托管理与其签名匹配的所有处理程序.我想在顶部搞乱这个委托,我想删除所有处理程序,然后在运行时重新添加它们.因此,顶部的委托是一个多播委托,其调用列表是各个委托的列表,而这些委托又指向我添加的四个处理程序之一.我希望这是有道理的,这是我正在做的一般概念.
你不能 - 委托是不可变的.您可以创建一个新委托,该委托等同于没有特定操作的旧委托,但您无法就地修改现有委托.
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |