private void BundleContextExtensionChanged(object sender, ExtensionEventArgs e) { if (e.ExtensionPoint.Equals(SimpleWinFormShellExtensionPoint)) { if (e.Action == CollectionChangedAction.Add) { // 新增扩展信息,说明有插件被启动,为其创建界面菜单 var app = ApplicationContainer.AddApplicationForExtension(e.Extension); CreateMenuStripForApplication(app); } else if (e.Action == CollectionChangedAction.Remove) { // 扩展信息被删除,有插件被停止,删除对应的界面菜单 var app = ApplicationContainer.RemoveApplicationForExtension(e.Extension); RemoveMenuStripForApplication(app); } } }
/// <summary> /// 处理扩展信息。 /// </summary> private void HanldeExtension() { Initialize(); // 1 获取所有扩展信息 var extensions = BundleContext.GetExtensions(SimpleWinFormShellExtensionPoint); WinShellApplication application; foreach (var extension in extensions) { // 2 将扩展Extension对象转换成WinShellApplication对象 application = ApplicationContainer.AddApplicationForExtension(extension); // 3 为WinShellApplication对象创建顶层菜单和子菜单 CreateMenuStripForApplication(application); } // 4 监听扩展变更事件 BundleContext.ExtensionChanged += BundleContextExtensionChanged; }