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); } }