public void ResolvePluginDependencies() { HashSet <Type> missingPlugins = new HashSet <Type>(_plugins.SelectMany(x => x.GetMissingDependencies(_plugins))); if (missingPlugins.Count == 0) { return; } foreach (Type type in missingPlugins) { if (PluginTypes.Contains(type)) { continue; } PuppeteerExtraPlugin dep = (PuppeteerExtraPlugin)Activator.CreateInstance(type); Use(dep); if (dep.Dependencies.Count > 0) { ResolvePluginDependencies(); } } }
public PuppeteerExtra Use(PuppeteerExtraPlugin plugin) { if (plugin.Name == null) { throw new ArgumentNullException(nameof(plugin)); } if ((plugin.Requirements & PluginRequirements.DataFromPlugins) == PluginRequirements.DataFromPlugins) { ;//plugin.getDataFromPlugins = this.getPluginData.bind(this) } //plugin._register(Object.getPrototypeOf(plugin)) _plugins.Add(plugin); return(this); }