XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.XApp.Core

【DLL】XApp开发核心支持

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Text.Json;
using XFEExtension.NetCore.FormatExtension;

namespace XFEExtension.NetCore.XApp.Core;

/// <summary>
/// App文件打包工具
/// </summary>
public static class AppFilePackageHelper
{
    /// <summary>
    /// 打包文件
    /// </summary>
    /// <param name="appFiles">app文件</param>
    /// <returns></returns>
    public static XFEMultiDictionary Package(AppFileCollection appFiles)
    {
        var appFileDictionary = new XFEMultiDictionary();
        foreach (var codeFile in appFiles.CodeFiles)
            appFileDictionary.Add("Code", JsonSerializer.Serialize(codeFile));
        foreach (var resourceFile in appFiles.ResourceFiles)
            appFileDictionary.Add("Resource", JsonSerializer.Serialize(resourceFile));
        foreach (var imageFile in appFiles.ImageFiles)
            appFileDictionary.Add("Image", JsonSerializer.Serialize(imageFile));
        return appFileDictionary;
    }
    /// <summary>
    /// 解包文件
    /// </summary>
    /// <param name="appFileDictionary">文件字典</param>
    /// <returns></returns>
    public static AppFileCollection UnPackage(XFEMultiDictionary appFileDictionary)
    {
        var appFiles = new AppFileCollection();
        foreach (var appFile in appFileDictionary)
        {
            switch (appFile.Header)
            {
                case "Code":
                    appFiles.Add(JsonSerializer.Deserialize<XAppCodeImpl>(appFile.Content)!);
                    break;
                case "Resource":
                    appFiles.Add(JsonSerializer.Deserialize<XAppResourceImpl>(appFile.Content)!);
                    break;
                case "Image":
                    appFiles.Add(JsonSerializer.Deserialize<XAppImageImpl>(appFile.Content)!);
                    break;
                default:
                    break;
            }
        }
        return appFiles;
    }
}