title: How to manipulate at runtime the invocation list of a Delegate?
body: <p>I want to know how do I go about removing individual delegates from the invocation list of the parent delegate.</p>
  
  <pre><code>&lt;DelegateName&gt;.RemoveAll();
  </code></pre>
  
  <p>Now I can just remove all and that will work just to get the idea in motion and see if works which it should but then any delegates removed will need adding again at RunTime!!!</p>
  
  <p>so: ...</p>
  
  <pre><code>foreach(Delegate d in &lt;DelegateName&gt;.getInvocationList)
  { // do something with 'D'?? }
  </code></pre>
  
  <p>Now that I have access to 'D' I can drop it into a .Remove() but it requies two arguments??? Could I get some help with this please?</p>
  
  <p>Lastly, once the delegate has been removed, what is the best way to re-add it again?
  So i'm assuming Reflection might play a part in this but over to you guys.</p>
  
  <p><strong>UPDATE:</strong> </p>
  
  <p>Essentially there is a global delegate that has many events living in different winforms classes that are instances of it. All of these events have a handler that handles the event when it is fired. The delegate all the way at the top governs all handlers that match its signature are fired. I want to mess about with this delegate at the top, I want to remove all handlers and then re-add them at run time. So the delegate at the top is a multicast delegate and its invocation list is a list of individual delegates that in turn point to one of the four handlers that I have added. I hope that makes sense, thats a general idea of whats I am doing.</p>