public PluginManager() { try { AggregateCatalog catalog = new AggregateCatalog(); catalog.Catalogs.Add(new DirectoryCatalog(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins"))); CompositionContainer container = new CompositionContainer(catalog); container.ComposeParts(this); if (Changers.Count() != 0) { Changers.ToList().ForEach(p => { ChangersDict.Add(p.Name, p.ChangeForm); Headers.Add(p.Name); }); } if (Modifiers.Count() != 0) { Modifiers.ToList().ForEach(p => { ModifiersDict.Add(p.Name, p.Modify); Headers.Add(p.Name); }); } if (Printers.Count() != 0) { Printers.ToList().ForEach(p => { PrintersDict.Add(p.Name, p.Print); Headers.Add(p.Name); }); } } catch (ChangeRejectedException ex) { Debug.WriteLine(ex.Message); foreach (var error in ex.Errors) { Debug.WriteLine(error.Element.DisplayName + " " + error.Description); } } }