using System.Collections; namespace XFEExtension.NetCore.AutoConfig; /// /// 配置文件列表 /// /// 配置文件类型 /// 列表泛型 public class ProfileList : ICollection, IEnumerable, IEnumerable, IList, IReadOnlyCollection, IReadOnlyList, ICollection, IList { private readonly List _innerList; /// /// 创建空列表 /// public ProfileList() => _innerList = []; /// /// 使用已有列表创建 /// /// 已有列表 public ProfileList(List innerList) => _innerList = innerList; /// public TValue this[int index] { get => ((IList)_innerList)[index]; set => ((IList)_innerList)[index] = value; } object? IList.this[int index] { get => ((IList)_innerList)[index]; set => ((IList)_innerList)[index] = value; } /// public int Count => ((ICollection)_innerList).Count; /// public bool IsReadOnly => ((ICollection)_innerList).IsReadOnly; /// public bool IsSynchronized => ((ICollection)_innerList).IsSynchronized; /// public object SyncRoot => ((ICollection)_innerList).SyncRoot; /// public bool IsFixedSize => ((IList)_innerList).IsFixedSize; /// public void Add(TValue item) { ((ICollection)_innerList).Add(item); XFEProfile.SaveProfile(typeof(TProfile)); } /// public int Add(object? value) { var result = ((IList)_innerList).Add(value); XFEProfile.SaveProfile(typeof(TProfile)); return result; } /// public void AddRange(IEnumerable collection) { _innerList.AddRange(collection); XFEProfile.SaveProfile(typeof(TProfile)); } /// public void AddRange(ReadOnlySpan source) { _innerList.AddRange(source); XFEProfile.SaveProfile(typeof(TProfile)); } /// public void Clear() { ((ICollection)_innerList).Clear(); XFEProfile.SaveProfile(typeof(TProfile)); } /// public bool Contains(TValue item) => ((ICollection)_innerList).Contains(item); /// public bool Contains(object? value) => ((IList)_innerList).Contains(value); /// public void CopyTo(TValue[] array, int arrayIndex) => ((ICollection)_innerList).CopyTo(array, arrayIndex); /// public void CopyTo(Array array, int index) => ((ICollection)_innerList).CopyTo(array, index); /// public IEnumerator GetEnumerator() => ((IEnumerable)_innerList).GetEnumerator(); /// public int IndexOf(TValue item) => ((IList)_innerList).IndexOf(item); /// public int IndexOf(object? value) => ((IList)_innerList).IndexOf(value); /// public void Insert(int index, TValue item) { ((IList)_innerList).Insert(index, item); XFEProfile.SaveProfile(typeof(TProfile)); } /// public void Insert(int index, object? value) { ((IList)_innerList).Insert(index, value); XFEProfile.SaveProfile(typeof(TProfile)); } /// public bool Remove(TValue item) { var result = ((ICollection)_innerList).Remove(item); XFEProfile.SaveProfile(typeof(TProfile)); return result; } /// public void Remove(object? value) { ((IList)_innerList).Remove(value); XFEProfile.SaveProfile(typeof(TProfile)); } /// public void RemoveAt(int index) { ((IList)_innerList).RemoveAt(index); XFEProfile.SaveProfile(typeof(TProfile)); } IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)_innerList).GetEnumerator(); }