private void LoadFigurePlugins() { //relative path to dll-s foreach (string file in Directory.GetFiles(@".\..", "*.dll")) { Assembly assembly = Assembly.LoadFrom(Directory.GetCurrentDirectory() + file); foreach (Type type in assembly.GetTypes()) { if (type.GetInterfaces().Contains(typeof(IFigurePlugin))) { IFigurePlugin figurePlugin = Activator.CreateInstance(type) as IFigurePlugin; FigurePlugins.Add(figurePlugin); } } } }
public void AddPlugin(IFigurePlugin plugin) { if (AddedPluginsList.Contains(plugin)) { return; } Button btn = plugin.getToolBox(); if (groupBox1.Controls.OfType <Button>().Count() != 0) { Button prevButton = groupBox1.Controls.OfType <Button>().Last(); btn.Location = new Point(prevButton.Location.X, prevButton.Location.Y + prevButton.Height); ActiveFigurePlugin = plugin; } groupBox1.Controls.Add(btn); btn.Click += (sender, e) => { ActiveFigurePlugin = plugin; PropertyEditor.AddPlugin(plugin); }; AddedPluginsList.Add(plugin); }
public void AddPlugin(IFigurePlugin plugin) { groupBox1.Controls.Clear(); groupBox1.Controls.Add(plugin.getPropertyEditor()); }