<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0-preview.5.23280.8" />

ConfigurationSectionGroupCollection

Represents a collection of ConfigurationSectionGroup objects.
using System.Collections; using System.Collections.Specialized; namespace System.Configuration { public sealed class ConfigurationSectionGroupCollection : NameObjectCollectionBase { private readonly ConfigurationSectionGroup _configSectionGroup; private MgmtConfigurationRecord _configRecord; public ConfigurationSectionGroup this[string name] { get { return Get(name); } } public ConfigurationSectionGroup this[int index] { get { return Get(index); } } internal ConfigurationSectionGroupCollection(MgmtConfigurationRecord configRecord, ConfigurationSectionGroup configSectionGroup) : base(StringComparer.Ordinal) { _configRecord = configRecord; _configSectionGroup = configSectionGroup; IDictionaryEnumerator enumerator = _configRecord.SectionGroupFactories.GetEnumerator(); try { while (enumerator.MoveNext()) { FactoryId factoryId = (FactoryId)((DictionaryEntry)enumerator.Current).Value; if (factoryId.Group == _configSectionGroup.SectionGroupName) BaseAdd(factoryId.Name, factoryId.Name); } } finally { (enumerator as IDisposable)?.Dispose(); } } internal void DetachFromConfigurationRecord() { _configRecord = null; BaseClear(); } private void VerifyIsAttachedToConfigRecord() { if (_configRecord == null) throw new InvalidOperationException(System.SR.Config_cannot_edit_configurationsectiongroup_when_not_attached); } public void Add(string name, ConfigurationSectionGroup sectionGroup) { VerifyIsAttachedToConfigRecord(); _configRecord.AddConfigurationSectionGroup(_configSectionGroup.SectionGroupName, name, sectionGroup); BaseAdd(name, name); } public void Clear() { VerifyIsAttachedToConfigRecord(); if (_configSectionGroup.IsRoot) _configRecord.RemoveLocationWriteRequirement(); string[] array = BaseGetAllKeys(); string[] array2 = array; foreach (string name in array2) { Remove(name); } } public void CopyTo(ConfigurationSectionGroup[] array, int index) { if (array == null) throw new ArgumentNullException("array"); int count = Count; if (array.Length < count + index) throw new ArgumentOutOfRangeException("index"); int num = 0; int num2 = index; while (num < count) { array[num2] = Get(num); num++; num2++; } } public ConfigurationSectionGroup Get(int index) { return Get(GetKey(index)); } public ConfigurationSectionGroup Get(string name) { VerifyIsAttachedToConfigRecord(); if (string.IsNullOrEmpty(name)) throw ExceptionUtil.ParameterNullOrEmpty("name"); if (name.Contains('/')) return null; string configKey = BaseConfigurationRecord.CombineConfigKey(_configSectionGroup.SectionGroupName, name); return _configRecord.GetSectionGroup(configKey); } public override IEnumerator GetEnumerator() { int c = Count; for (int i = 0; i < c; i++) { yield return (object)this[i]; } } public string GetKey(int index) { return BaseGetKey(index); } public void Remove(string name) { VerifyIsAttachedToConfigRecord(); _configRecord.RemoveConfigurationSectionGroup(_configSectionGroup.SectionGroupName, name); string key = BaseConfigurationRecord.CombineConfigKey(_configSectionGroup.SectionGroupName, name); if (!_configRecord.SectionFactories.Contains(key)) BaseRemove(name); } public void RemoveAt(int index) { VerifyIsAttachedToConfigRecord(); Remove(GetKey(index)); } } }