using System.Collections;
using System.Text.Json;
using XFEExtension.NetCore.FormatExtension;
namespace XFEExtension.NetCore.XApp.Core;
///
/// App文件集合
///
public class AppFileCollection : IList
{
private List appFiles = [];
///
/// 代码文件
///
public XAppCode[] CodeFiles { get => appFiles.OfType().ToArray(); }
///
/// 资源文件
///
public XAppResource[] ResourceFiles { get => appFiles.OfType().ToArray(); }
///
/// 图片文件
///
public XAppImage[] ImageFiles { get => appFiles.OfType().ToArray(); }
///
/// 索引器
///
/// 索引
///
public XAppFile this[int index] { get => ((IList)appFiles)[index]; set => ((IList)appFiles)[index] = value; }
///
/// 数量
///
public int Count => ((ICollection)appFiles).Count;
///
/// 是否只读
///
public bool IsReadOnly => ((ICollection)appFiles).IsReadOnly;
///
/// 添加文件
///
/// 文件
public void Add(XAppFile item)
{
((ICollection)appFiles).Add(item);
}
///
/// 清空
///
public void Clear()
{
((ICollection)appFiles).Clear();
}
///
/// 是否包含
///
///
///
public bool Contains(XAppFile item)
{
return ((ICollection)appFiles).Contains(item);
}
///
/// 复制到
///
/// 数组
/// 起始索引
public void CopyTo(XAppFile[] array, int arrayIndex)
{
((ICollection)appFiles).CopyTo(array, arrayIndex);
}
///
/// 获取枚举器
///
///
public IEnumerator GetEnumerator()
{
return ((IEnumerable)appFiles).GetEnumerator();
}
///
/// 获取指定文件索引
///
/// 文件
///
public int IndexOf(XAppFile item)
{
return ((IList)appFiles).IndexOf(item);
}
///
/// 插入
///
/// 索引
/// 文件
public void Insert(int index, XAppFile item)
{
((IList)appFiles).Insert(index, item);
}
///
/// 打包
///
///
public XFEMultiDictionary Package() => AppFilePackageHelper.Package(this);
///
/// 从字典中解包
///
/// 字典
///
public static AppFileCollection? UnPackage(XFEMultiDictionary appFileDictionary) => AppFilePackageHelper.UnPackage(appFileDictionary);
///
/// 移除指定文件
///
///
///
public bool Remove(XAppFile item)
{
return ((ICollection)appFiles).Remove(item);
}
///
/// 移除指定索引的文件
///
/// 索引
public void RemoveAt(int index)
{
((IList)appFiles).RemoveAt(index);
}
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable)appFiles).GetEnumerator();
}
}