private void CheckForDuplicateGuidsAndManifest() { if (this.PluginsImport == null || this.PluginsImport.Length == 0) { return; } IList <T> fullyLoadedPlugins = new List <T>(); // Add already loaded plugins. if (this.Plugins != null) { foreach (var loadedPlugin in this.Plugins) { if (CheckPluginManifests(loadedPlugin)) { fullyLoadedPlugins.Add(loadedPlugin); } } } // Add newly loaded plugins. foreach (var plugin in PluginsImport) { WsapmPluginBase pluginBase = plugin as WsapmPluginBase; if (pluginBase == null) { continue; } bool addPlugin = true; foreach (var loadedPlugin in fullyLoadedPlugins) { var loadedPluginBase = loadedPlugin as WsapmPluginBase; if (loadedPluginBase != null && loadedPluginBase.PluginAttribute.PluginGuid == pluginBase.PluginAttribute.PluginGuid) { addPlugin = false; break; } } if (addPlugin && CheckPluginManifests(plugin)) { fullyLoadedPlugins.Add(plugin); } } this.Plugins = fullyLoadedPlugins.ToArray <T>(); }
/// <summary> /// Gets a CheckSuspendResult from a FromPluginCheckSuspendResult. /// </summary> /// <param name="pluginCheckSuspendResult">The PluginCheckSuspendResult from which to get a CheckSuspendResult.</param> /// <param name="pluginSource">The plugin which is the source of the PluginCheckSuspendResult.</param> /// <returns>A CheckSuspendResult representing a FromPluginCheckSuspendResult.</returns> public static CheckSuspendResult FromPluginCheckSuspendResult(PluginCheckSuspendResult pluginCheckSuspendResult, WsapmPluginBase pluginSource) { var result = new CheckSuspendResult(false, string.Empty); if (pluginCheckSuspendResult == null) { return(result); } result.SuspendStandby = pluginCheckSuspendResult.SuspendStandby; if (pluginSource != null) { result.Reason = pluginCheckSuspendResult.Reason + " [" + pluginSource.PluginAttribute.Name + "]"; } return(result); }