コード例 #1
0
        /// <summary>
        /// Loads assemblies from .dll files in the directory provided, instantiates
        /// the classes, and returns the collection of plugins ready to be used.
        /// </summary>
        /// <param name="directory"></param>
        /// <returns></returns>
        public virtual ICollection <IExcelProcess> Load(string directory)
        {
            // Find plugins in source directory
            logger.Trace("Searching for .dlls in {dir}", directory);
            string[] dllFileNames = GetDLLs(directory);
            logger.Trace("Found {num} .dlls", dllFileNames.Length);

            // Load the assemblies into memory
            ICollection <Assembly> assemblies = LoadAssemblies(dllFileNames);

            // Load the plugins from the assemblies
            ICollection <Type> pluginTypes = GetPluginTypes(assemblies);

            logger.Trace("Found {num} plugins that implement the plugin interface.", pluginTypes.Count);

            // Instantiate
            ICollection <IExcelProcess> plugins = new List <IExcelProcess>(pluginTypes.Count);

            foreach (Type type in pluginTypes)
            {
                IExcelProcess plugin = (IExcelProcess)Activator.CreateInstance(type);
                plugins.Add(plugin);
            }

            return(plugins);
        }
コード例 #2
0
        public ICollection <IExcelProcess> Load(string directory)
        {
            // Find plugins in source directory
            string[] dllFileNames = GetDLLs(directory);
            // Load the assemblies into memory
            ICollection <Assembly> assemblies = LoadAssemblies(dllFileNames);
            // Load the plugins from the assemblies
            ICollection <Type> pluginTypes = GetPluginTypes(assemblies);

            // Instantiate
            ICollection <IExcelProcess> plugins = new List <IExcelProcess>(pluginTypes.Count);

            foreach (Type type in pluginTypes)
            {
                IExcelProcess plugin = (IExcelProcess)Activator.CreateInstance(type);
                plugins.Add(plugin);
            }

            return(plugins);
        }
コード例 #3
0
 public void AddPlugin(IExcelProcess Plugin)
 {
     Plugins.Add(Plugin);
     Console.WriteLine("Loaded 1 plugin.");
 }