Beispiel #1
0
 // adds the plugin
 public static void AddPlugin(String path)
 {
     if (String.Compare(Path.GetFileName(path), "_interface.dll") != 0) // we exclude iface dll
     {
         clPlugins clp = new clPlugins(path, false);
         clp.isValid = false;
         try
         {
             Assembly     thisAssembly = Assembly.LoadFile(path);
             IPluginIface plugin       = (IPluginIface)thisAssembly.CreateInstance("coesus.Plugin");
             if (plugin != null)
             {
                 clp.isValid = true;
                 clp.plugin  = plugin;
                 plugins.Add(clp);
             }
         }
         catch (Exception e)
         {
             // we know this is not a regural .net dll
             clp.error = ".NET assembly error";
             plugins.Add(clp);
         }
     }
 }
Beispiel #2
0
        public static void FillPlugins(IAppIface app)
        {
            String dir = String.Concat(
                Settings.Server.appDirectory, "\\", Settings.Server.pluginsSubdirectory);

            if (Directory.Exists(dir))
            {
                String[] filenames = Directory.GetFiles(dir, "*.dll");
                foreach (String fname in filenames)
                {
                    AddPlugin(fname);
                }

                // init each
                foreach (clPlugins clpx in plugins)
                {
                    if (clpx.isValid)
                    {
                        clpx.plugin.Init(app);
                        // Console.WriteLine(String.Concat("INIT ", clpx.plugin.Name, " ", app.ToString()));
                    }
                }

                // passing list of the plugins to each
                IPluginIface[] pluginIfaces = new IPluginIface[plugins.Count];

                for (int i = 0; i < plugins.Count; i++)
                {
                    if (plugins[i].isValid)
                    {
                        pluginIfaces[i] = (IPluginIface)plugins[i].plugin;
                    }
                }

                foreach (clPlugins clpx in plugins)
                {
                    if (clpx.isValid)
                    {
                        clpx.plugin.AllThePlugins(pluginIfaces);
                    }
                }
            }
        }