private void LoadHandlers() { comboBoxHandler.BeginUpdate(); var handlers = new List <string>(); foreach (var handler in _handlerTypes) { var existingHandle = CurrentAgentConfig?.GetHandler(CurrentEventName, handler.Name); if (existingHandle != null && _initialEntry?.Handler?.GetType().FullName != existingHandle.GetType().FullName) { continue; } handlers.Add(handler.Name); } var handlerObjects = handlers.OrderBy(x => x).Cast <object>().ToArray(); comboBoxHandler.Items.Clear(); comboBoxHandler.Items.AddRange(handlerObjects); comboBoxHandler.EndUpdate(); if (comboBoxHandler.Items.Count > 0) { comboBoxHandler.SelectedIndex = 0; } else { RefreshCanConfigure(); } }
private void SaveAndHide() { if (_initialEntry == null && _agentConfigs.All(x => x.GetType().Name != CurrentAgentConfigName)) { // add a new agent config to the agent config list if // no config agent yet or // config agent has changed and the new target agent config type does not exist yet var agentType = AppDomain.CurrentDomain .GetAssemblies() .GetAgentConfigTypes() .Single(x => x.Name == CurrentAgentConfigName); _agentConfigs.Add((IAgentConfig)Activator.CreateInstance(agentType)); } Debug.Assert(CurrentAgentConfig != null, "CurrentAgent != null"); var existingEventProperty = _initialEntry?.AgentConfig.GetType().GetProperty(_initialEntry.EventName); var existingHandler = _initialEntry?.AgentConfig.GetHandler(_initialEntry.EventName, _initialEntry.Handler?.GetType().Name); var newEventProperty = CurrentAgentConfig.GetType().GetProperty(CurrentEventName); var newHandlerType = AppDomain.CurrentDomain.GetAssemblies().GetHandlerTypes() .Single(x => x.Name == CurrentHandlerName); Debug.Assert(newEventProperty != null, "eventProperty != null"); if (_initialEntry != null && _initialEntry.AgentConfig != CurrentAgentConfig) { // when agent config changed _mainForm.RemoveEntry(existingEventProperty, _initialEntry.Handler?.GetType()); _mainForm.AddEntry(newEventProperty, _currentHandler); } else if (_initialEntry != null && _initialEntry.EventName == CurrentEventName && _initialEntry.Handler?.GetType().Name == CurrentHandlerName) { // equal - do nothing } else { if (_initialEntry != null && _initialEntry.Handler?.GetType() != newHandlerType && _initialEntry.AgentConfig.GetType() == CurrentAgentConfig.GetType()) { // replace existing handler with new one _mainForm.ReplaceEntry(CurrentAgentConfig.GetType().GetProperty(_initialEntry.EventName), existingHandler, _currentHandler); } else { // add new entry _mainForm.AddEntry(newEventProperty, _currentHandler); } } Hide(); }