public void Load(XElement root) { if (root == null) { throw new ArgumentNullException(nameof(root)); } m_assemblies = new List <ErrorCheckerAssembly>(); var node = root.Element("ErrorCheckers"); if (node != null) { var assemblyNodes = node.Elements("Assembly"); foreach (var assemblyNode in assemblyNodes) { var filename = assemblyNode.Attribute("filename").Value; try { var assembly = new ErrorCheckerAssembly(filename); m_assemblies.Add(assembly); foreach (var checker in assemblyNode.Elements("Checker")) { assembly.SetEnabled(checker.Attribute("type").Value, bool.Parse(checker.Attribute("enabled").Value)); } } catch //https://msdn.microsoft.com/en-us/library/ms972962.aspx#pluginframework_topic5 Seems to suggest that a generic try catch is the way to go. { MessageBox.Show("Failed to load assembly '" + filename + "'. This assembly will not be saved in the config file."); } } } }
public void RefreshConfig(PluginsConfig pluginsConfig) { foreach (var pluginAssembly in pluginsConfig.UnfilteredAssemblies(MainAssembly.Include)) { ErrorCheckerAssembly configECA = GetAssembly(pluginAssembly); if (configECA == null) { configECA = new ErrorCheckerAssembly(pluginAssembly); AddAssembly(configECA); } } Save(); }
private void btnOk_Click(object sender, EventArgs e) { foreach (var pluginAssembly in m_pluginsConfig.UnfilteredAssemblies(MainAssembly.Include)) { ErrorCheckerAssembly configECA = m_config.GetAssembly(pluginAssembly); if (configECA == null) { configECA = new ErrorCheckerAssembly(pluginAssembly); m_config.AddAssembly(configECA); } foreach (ErrorCheckerController.ErrorCheckerData checker in configECA.Types) { var enabledCheckers = m_list.Items.Where(i => i.Checked); checker.Enabled = enabledCheckers.Any(c => c.Element.SerializeName == checker.SerializeName); } } m_config.Save(); Close(); }
private void PopulateListBox() { foreach (var pluginAssembly in m_pluginsConfig.UnfilteredAssemblies(MainAssembly.Include)) { ErrorCheckerAssembly configECA = m_config.GetAssembly(pluginAssembly); ErrorCheckerAssembly eca = new ErrorCheckerAssembly(pluginAssembly); foreach (var checker in eca.Types) { if (configECA != null && configECA.Types.Any(c => c.SerializeName == checker.SerializeName)) { m_list.AddItem(checker, configECA.Types[checker.SerializeName].Enabled); } else { m_list.AddItem(checker, true); } } } }
public void AddAssembly(ErrorCheckerAssembly assembly) { m_assemblies.Add(assembly); }