我在我的應用中使用了一種簡單的消息代理,其中插件可以註冊以通知自定義事件。嗯...是這樣的:發佈/訂閱不同的代理類型
class MessageBroker
{
Dictionary<string,List<Delegate>> SubscribersToEvent;
void SubscribeToEvent(string eventName, Delegate callback);
object RaiseEvent(string eventName);
}
這工作得很好,很正常,只要我使用相同的委託(和所有事件的相同的參數列表)
有沒有乾淨的方式我可以訂閱/觸發使用自定義代理的事件的參數數量和類型可能會因每種類型的事件而發生變化?
即。最後,我想要做的事,如:
messageBroker.RaiseEvent("button1_click", new object[] { button1, parameter2, param2})
而這又是打電話
void CallbackToButton1_click(Buttton btn, string p1, int p2)
這將是可行的與反思,以速度爲代價。 – 2012-01-11 23:19:52