private void AddPlugin(string FileName) { Assembly pluginAssembly = Assembly.LoadFrom(FileName); foreach (Type pluginType in pluginAssembly.GetTypes()) { if (pluginType.IsPublic) { if (!pluginType.IsAbstract) { Type[] typeInterfaces = pluginType.GetInterfaces(); foreach (Type typeInterface in typeInterfaces) { if (typeInterface.ToString() == "GraphicsInterface.IGraphicsProvider") { GraphicsTypes.AvailablePlugin newPlugin = new GraphicsTypes.AvailablePlugin(); newPlugin.AssemblyPath = FileName; newPlugin.Instance = (IGraphicsProvider)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); this.colAvailablePlugins.Add(newPlugin); newPlugin = null; } } } } } pluginAssembly = null; }
void BtnOkClick(object sender, EventArgs e) { if (listTools.SelectedIndex != -1) { GraphicsTypes.AvailablePlugin plugin = graphicsServices.GetPlugin((string)listTools.SelectedItem); if (plugin.Instance.Name != null) { plugin.Instance.Config = new ConfigManager((string)listTools.SelectedItem); plugin.Instance.Configure(); } } }
void formAddClosed(object sender, EventArgs e) { if (formAdd.plugin != null) { GraphicsTypes.AvailablePlugin plugin = parent.graphicsServices.GetPlugin(formAdd.plugin); plugin.Instance.Layer = new LayerManager(formAdd.plugin, layers); plugin.Instance.ConfigureCommon(); symbolManager.SaveCommonLayers(layers); this.RefreshLayers(); } }