public void Load() { if (m_log.IsDebugEnabled) { m_log.DebugFormat("{0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); } foreach (string ext in extpoints) { log.Info("[PLUGINS]: Loading extension point " + ext); if (constraints.ContainsKey(ext)) { IPluginConstraint cons = constraints[ext]; if (cons.Apply(ext)) { log.Error("[PLUGINS]: " + ext + " failed constraint: " + cons.Message); } } IPluginFilter filter = null; if (filters.ContainsKey(ext)) { filter = filters[ext]; } List <T> loadedPlugins = new List <T>(); foreach (PluginExtensionNode node in AddinManager.GetExtensionNodes(ext)) { log.Info("[PLUGINS]: Trying plugin " + node.Path); if ((filter != null) && (filter.Apply(node) == false)) { continue; } T plugin = (T)node.CreateInstance(); loadedPlugins.Add(plugin); } // We do Initialise() in a second loop after CreateInstance // So that modules who need init before others can do it // Example: Script Engine Component System needs to load its components before RegionLoader starts foreach (T plugin in loadedPlugins) { Initialiser.Initialise(plugin); Plugins.Add(plugin); } } }
public void Load() { foreach (string ext in extpoints) { log.Info("[Plugins]: Loading extension point " + ext); if (constraints.ContainsKey(ext)) { IPluginConstraint cons = constraints[ext]; if (cons.Apply(ext)) { log.Error("[Plugins]: " + ext + " failed constraint: " + cons.Message); } } IPluginFilter filter = null; if (filters.ContainsKey(ext)) { filter = filters[ext]; } List <T> loadedPlugins = new List <T>(); foreach (PluginExtensionNode node in AddinManager.GetExtensionNodes(ext)) { log.Info("[Plugins]: Trying plugin " + node.Path); if ((filter != null) && (filter.Apply(node) == false)) { continue; } T plugin = (T)node.CreateInstance(); loadedPlugins.Add(plugin); } /// <summary> /// We do Initialize() in a second loop after CreateInstance /// So that modules who need init before others can do it /// Example: /// Script Engine Componant System needs to load its componants before RegionLoader starts /// </summary> foreach (T plugin in loadedPlugins) { Initialiser.Initialise(plugin); Plugins.Add(plugin); } } }
public void AddConstraint(string extpoint, IPluginConstraint cons) { constraints.Add(extpoint, cons); }
public void Add(string extpoint, IPluginConstraint cons) { Add(extpoint); AddConstraint(extpoint, cons); }