示例#1
0
        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>();
        }
示例#2
0
        /// <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);
        }