【发布时间】:2010-07-13 13:09:54
【问题描述】:
我有一个支持插件 (MEF) 的应用程序。 插件是导入服务的 WPF 用户控件。
用户可以从应用程序的主菜单中选择想要的插件。
为此,我使用以下循环:
foreach(IToolPlugin Plugin in ToolPlugins)
{
Plugin.Init();
MenuItem PluginMenuItem = Plugin.MenuItem; //New MenuItem but with Header set.
PluginMenuItem.Click += new RoutedEventHandler(delegate(object o, RoutedEventArgs e) { DoSomething(Plugin.Control);});
PluginsMenu.Items.add(PluginMenuItem);
}
这对于单个项目非常有效。但是只要我有超过 1 个插件,所有菜单项都会执行最后一个循环的委托。或者至少使用最后一个循环的 Plugin.Control。
我该如何解决这个问题?
感谢您的帮助。
【问题讨论】:
-
我喜欢看到这个问题的许多变化。
-
@Chaos - 在这种情况下你应该投票关闭 ;)
标签: c# delegates closures event-handling