public FileExplorer(NameObjectCollection fileFunctionMap) { m_fileFunctionMap = fileFunctionMap; _quit = false; m_DNV = Settings.Instance.DNV; m_indexer = new Indexer(Properties.Settings.Instance.TempIndexPath, IndexMode.CREATE); }
/// <summary> /// Responsible for loading plugins and extracting RegisteredFileExtension and RegisteredHTMLTags /// </summary> private void LoadPlugins() { m_objCollection = new NameObjectCollection(); m_htTagMap = new Hashtable(10); string strLocation = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Plugins"); string[] strFileList = Directory.GetFiles(strLocation, "*.dll"); foreach (string file in strFileList) { Assembly assembly; try { Logger.Instance.LogDebug("Loaded plugin: " + file); assembly = Assembly.LoadFrom(file); } catch { Logger.Instance.LogError("Unable to load plugin: " + file); continue; } // TODO: Re-look this loop. Make it more efficient foreach (Type t in assembly.GetTypes()) { foreach (Type iface in t.GetInterfaces()) { if (iface.Equals(typeof(IPlugin))) { IPlugin iPlugin; try { iPlugin = (IPlugin)Activator.CreateInstance(t); } catch { Logger.Instance.LogError("Unable to load instance of plugin: " + file); continue; } foreach (string fileExtension in iPlugin.RegisteredFileExtentions) { m_objCollection.Add(fileExtension, iPlugin); } foreach (string tag in iPlugin.RegisteredHTMLTags) { if (!m_htTagMap.ContainsKey(tag)) { m_htTagMap.Add(tag, iPlugin); } else { Logger.Instance.LogError(iPlugin.PluginName + " trying to register " + tag + "again. Previous Owner: " + (string)m_htTagMap[tag]); } } } } } } }
/// <summary> /// Responsible for loading plugins and extracting RegisteredFileExtension and RegisteredHTMLTags /// </summary> private void LoadPlugins() { m_objCollection = new NameObjectCollection(); m_htTagMap = new Hashtable(10); string strLocation = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Plugins"); string[] strFileList = Directory.GetFiles(strLocation, "*.dll"); foreach (string file in strFileList) { Assembly assembly; try { Logger.Instance.LogDebug("Loaded plugin: " + file); assembly = Assembly.LoadFrom(file); } catch { Logger.Instance.LogError("Unable to load plugin: " + file); continue; } // TODO: Re-look this loop. Make it more efficient foreach (Type t in assembly.GetTypes()) { foreach (Type iface in t.GetInterfaces()) { if (iface.Equals(typeof(IPlugin))) { IPlugin iPlugin; try { iPlugin = (IPlugin)Activator.CreateInstance(t); } catch { Logger.Instance.LogError("Unable to load instance of plugin: " + file); continue; } foreach(string fileExtension in iPlugin.RegisteredFileExtentions) { m_objCollection.Add(fileExtension, iPlugin); } foreach(string tag in iPlugin.RegisteredHTMLTags) { if(!m_htTagMap.ContainsKey(tag)) { m_htTagMap.Add(tag, iPlugin); } else { Logger.Instance.LogError(iPlugin.PluginName + " trying to register " + tag + "again. Previous Owner: " + (string) m_htTagMap[tag]); } } } } } } }