예제 #1
0
        public void LoadPlugins()
        {
            Console.WriteLine("Loading plugins...");
            Console.WriteLine();
            var pluginFiles = Directory.GetFiles(PluginFolder);
            var pluginTypes = new List <Type>();

            for (int i = 0; i < pluginFiles.Length; i++)
            {
                try
                {
                    if (Path.GetExtension(pluginFiles[i]) != ".dll")
                    {
                        continue;
                    }

                    Console.WriteLine("Loading {0}...", pluginFiles[i]);
                    var assembly = Assembly.LoadFrom(pluginFiles[i]);
                    var types    = assembly.GetExportedTypes();
                    for (int j = 0; j < types.Length; j++)
                    {
                        if (m_PluginType.IsAssignableFrom(types[j]) && !types[j].IsAbstract)
                        {
                            var plugin = Activator.CreateInstance(types[j]) as Plugin;
                            Console.WriteLine("\tLoading {0}...", plugin.GetType().Name);
                            Console.WriteLine("\t\tName: {0}\n\t\tDescription: {1}\n\t\tAuthor: {2}", plugin.Name, plugin.Description, plugin.Author);

                            plugin.Client = m_Client;
                            LoadedPlugins.Add(plugin);
                        }
                    }
                    Console.WriteLine();
                    LoadedPluginAssemblies.Add(assembly);
                }
                catch (PluginException)
                {
                    //TODO: Add logs.
                    //TODO: Remove plugin if the plugin was loaded.
                    Console.WriteLine("Error in plugin {0} constructor", pluginFiles[i]);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error while loading {0}: \n\t{1}", pluginFiles[i], ex.Message);
                }
            }

            for (int i = 0; i < LoadedPlugins.Count; i++)
            {
                var pluginTasks = new PluginTasks(LoadedPlugins[i]);
                m_PluginTasks.Add(pluginTasks);
                pluginTasks.DoLoad();
            }
        }
예제 #2
0
        public void LoadPlugins()
        {
            Console.WriteLine("Loading plugins...");
            Console.WriteLine();
            var pluginFiles = Directory.GetFiles(PluginFolder);
            var pluginTypes = new List<Type>();
            for (int i = 0; i < pluginFiles.Length; i++)
            {
                try
                {
                    if (Path.GetExtension(pluginFiles[i]) != ".dll")
                        continue;

                    Console.WriteLine("Loading {0}...", pluginFiles[i]);
                    var assembly = Assembly.LoadFrom(pluginFiles[i]);
                    var types = assembly.GetExportedTypes();
                    for (int j = 0; j < types.Length; j++)
                    {
                        if (m_PluginType.IsAssignableFrom(types[j]) && !types[j].IsAbstract)
                        {
                            var plugin = Activator.CreateInstance(types[j]) as Plugin;
                            Console.WriteLine("\tLoading {0}...", plugin.GetType().Name);
                            Console.WriteLine("\t\tName: {0}\n\t\tDescription: {1}\n\t\tAuthor: {2}", plugin.Name, plugin.Description, plugin.Author);

                            plugin.Client = m_Client;
                            LoadedPlugins.Add(plugin);
                        }
                    }
                    Console.WriteLine();
                    LoadedPluginAssemblies.Add(assembly);
                }
                catch (PluginException)
                {
                    //TODO: Add logs.
                    //TODO: Remove plugin if the plugin was loaded.
                    Console.WriteLine("Error in plugin {0} constructor", pluginFiles[i]);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error while loading {0}: \n\t{1}", pluginFiles[i], ex.Message);
                }
            }

            for (int i = 0; i < LoadedPlugins.Count; i++)
            {
                var pluginTasks = new PluginTasks(LoadedPlugins[i]);
                m_PluginTasks.Add(pluginTasks);
                pluginTasks.DoLoad();
            }
        }