/// <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); }
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); }
public void AddPlugin(IExcelProcess Plugin) { Plugins.Add(Plugin); Console.WriteLine("Loaded 1 plugin."); }