我正在设计一个支持插件开发的应用程序。它更多是一种学习练习。

正在加载到我的应用程序中的所有程序集(插件)都包含showPrefs()方法。在加载每个程序集时,我想为每个程序集分配一个按钮,以便当我单击该按钮时,它会触发该按钮所分配到的程序集的showPrefs()方法。

我该怎么做呢?一种快速而肮脏的解决方案是将showPrefs()方法签名更改为showPrefs(对象发送方,EventArgs e)。这样,我可以将其分配给按钮,但是我认为这是一个廉价的解决方法。

有任何想法吗?



click事件处理程序仅接受具有(对象o,EventArgs e)方法签名的委托,因此我不知道如何将showPrefs()方法分配给click事件。

那就是我遇到的麻烦。

最佳答案

如果您查看Will的伪代码,他将为lambda表达式分配给Click处理程序,例如:

b.Click += (o,e) => { i.showPrefs(); };


那就是那里的一个任意方法,接受一个对象和EventArgs。然后,它在界面上调用showPrefs函数。它大致等于以下内容:

b.Click += delegate(Object o, EventArgs e) { i.showPrefs(); };


如果您使用的是c#2.0,这可能会很有用。

10-01 19:28