예제 #1
0
 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);
         }
     }
 }