using System.Collections; using System.Collections.Generic; using global::Pilz.GeneralEventArgs; namespace Pilz.Configuration { public class ConfigurationManagerList : IList { public event GettingParentManagerEventHandler GettingParentManager; public delegate void GettingParentManagerEventHandler(object sender, GetValueEventArgs e); private readonly List myList = new List(); private object GetParentManager() { var args = new GetValueEventArgs(); GettingParentManager?.Invoke(this, args); return args.Value; } public ConfigurationManager this[int index] { get { return myList[index]; } set { myList[index] = value; } } public int Count { get { return myList.Count; } } public bool IsReadOnly { get { return false; } } public void Insert(int index, ConfigurationManager item) { myList.Insert(index, item); item.SetConfiguration((SimpleConfiguration)GetParentManager()); } public void RemoveAt(int index) { } public void Add(ConfigurationManager item) { item.SetConfiguration((SimpleConfiguration)GetParentManager()); } public void Clear() { foreach (ConfigurationManager item in myList) item.SetConfiguration(null); myList.Clear(); } public void CopyTo(ConfigurationManager[] array, int arrayIndex) { myList.CopyTo(array, arrayIndex); } public int IndexOf(ConfigurationManager item) { return myList.IndexOf(item); } public bool Contains(ConfigurationManager item) { return myList.Contains(item); } public bool Remove(ConfigurationManager item) { item.SetConfiguration(null); return myList.Remove(item); } public IEnumerator GetEnumerator() { return GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return myList.GetEnumerator(); } } }