Ejemplo n.º 1
0
 public void CargarPlugins(string folder)
 {
     try
     {
         string[] files = Directory.GetFiles(folder, "*.dll");
         foreach (string file in files)
         {
             try
             {
                 Assembly assembly = Assembly.LoadFile(file);
                 foreach (Type type in assembly.GetTypes())
                 {
                     if (!type.IsClass || type.IsNotPublic)
                     {
                         continue;
                     }
                     Type[] interfaces = type.GetInterfaces();
                     if (((IList)interfaces).Contains(typeof(IPlugin)))
                     {
                         PluginStatus pl;
                         object       obj = Activator.CreateInstance(type);
                         var          t   = (IPlugin)obj;
                         // agregar
                         if (_pluginsActivos.Contains(file))
                         {
                             t.Initialize(_parent);
                             pl = new PluginStatus(t, file, true);
                             //visible?
                             t.GetButton().Visible = PluginsVisibles.Contains(file);
                         }
                         else
                         {
                             pl = new PluginStatus(t, file, false);
                         }
                         plugins.Add(pl);
                     }
                 }
             }
             catch (Exception e)
             {
                 Log.ShowAndLog(
                     new Exception("El Plugin " + file + " Ha reportado el siguiente error:\n" + e.Message));
             }
         }
     }
     catch (DirectoryNotFoundException)
     {
         return;
     }
     catch (Exception ex)
     {
         // error cargando plugins
         Log.ShowAndLog(ex);
     }
 }
Ejemplo n.º 2
0
 public void DescargarPlugins()
 {
     foreach (PluginStatus p in plugins)
     {
         if (p.Activado)
         {
             p.Plugin.Terminate();
         }
     }
     plugins.Clear();
     PluginsActivos.Clear();
     PluginsVisibles.Clear();
 }
Ejemplo n.º 3
0
        public void MostrarPlugin(String arch, bool ver)
        {
            PluginStatus p = getPlugin(arch);

            if (p != null && p.Activado)
            {
                if (ver)
                {
                    PluginsVisibles.Add(arch);
                    p.Plugin.GetButton().Visible = true;
                }
                else
                {
                    PluginsVisibles.Remove(arch);
                    p.Plugin.GetButton().Visible = false;
                }
            }
        }