static void OnExtensionChanged(object s, ExtensionNodeEventArgs args) { VersionControlSystem vcs; try { vcs = (VersionControlSystem)args.ExtensionObject; } catch (Exception e) { LoggingService.LogError("Failed to initialize VersionControlSystem type.", e); return; } if (args.Change == ExtensionChange.Add) { handlers.Add(vcs); try { // Include the repository type in the serialization context, so repositories // of this type can be deserialized from the configuration file. Repository r = vcs.CreateRepositoryInstance(); r.AddRef(); dataContext.IncludeType(r.GetType()); r.Unref(); } catch (Exception e) { LoggingService.LogError("Error while adding version control system.", e); } } else { handlers.Remove(vcs); } }
static void OnExtensionChanged(object s, ExtensionNodeEventArgs args) { VersionControlSystem vcs; try { vcs = (VersionControlSystem)args.ExtensionObject; } catch (Exception e) { LoggingService.LogError("Failed to initialize VersionControlSystem type.", e); return; } if (args.Change == ExtensionChange.Add) { IComparer <VersionControlSystem> compare = new CompareVersionControlSystem(); int search = handlers.BinarySearch(vcs, compare); if (search < 0) { handlers.Insert(~search, vcs); } else { LoggingService.LogError("Adding new version control system {0} failed, the name {1} is already reserved.", vcs.GetType().Name, vcs.Name); return; } try { // Include the repository type in the serialization context, so repositories // of this type can be deserialized from the configuration file. Repository r = vcs.CreateRepositoryInstance(); r.AddRef(); dataContext.IncludeType(r.GetType()); r.Unref(); } catch (Exception e) { LoggingService.LogError("Error while adding version control system.", e); } } else { handlers.Remove(vcs); } }