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