Publish/Subscribe with different delegate types
<p>I'm using a simple sort of message broker in my app, where plugins can register to be notified for custom events. Uhm.. like this :</p>

<pre><code>class MessageBroker
{
    Dictionary&lt;string,List&lt;Delegate&gt;&gt; SubscribersToEvent;

    void SubscribeToEvent(string eventName, Delegate callback);
    object RaiseEvent(string eventName);
}
</code></pre>

<p>This works fine and dandy as long as I use the same Delegate (and the same parameter list for all events)</p>

<p>Is there any clean way I can subscribe/trigger events that use custom delegates in that the number and type of parameters might change for each type of event?</p>

<p>ie.  In the end I want to do something like:</p>

<pre><code>  messageBroker.RaiseEvent("button1_click", new object[] { button1, parameter2, param2} )
</code></pre>

<p>and that in turn to be calling subscribed method(s)</p>

<pre><code>   void CallbackToButton1_click(Buttton btn, string p1, int p2) 
</code></pre>
