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();
}