Пример #1
0
        public void UpdateInjections()
        {
            List <string> NeededAddonInjections = new List <string>();

            // First remove any unwanted injections
            foreach (IAddon loadedAddon in LoadedAddons)
            {
                if (!RequestedAddons.Exists(requestedAddon => requestedAddon == loadedAddon.CoreName))
                {
                    LoadedAddons.RemoveAll(addon => addon.CoreName == loadedAddon.CoreName);

                    logger.Debug("Removing injected dependency as it is no longer required: {0}", loadedAddon.CoreName);
                }
            }

            // Then add needed injections
            foreach (string requestedAddon in RequestedAddons)
            {
                if (!LoadedAddons.Exists(loadedAddon => loadedAddon.CoreName == requestedAddon))
                {
                    NeededAddonInjections.Add(requestedAddon);
                }
            }

            // Finally raise event and hope someone listens
            if (InjectionRequest != null)
            {
                //logger.Debug("Raising injection request for following addons: {0}", String.Join(Environment.NewLine, NeededAddonInjections));

                InjectionRequest.Invoke(this, NeededAddonInjections);
            }
            else
            {
                logger.Warn("Unmonitored injection request for {0} new dependencies", NeededAddonInjections.Count);
            }
        }