同步操作将从 faib920/codebuilder 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
// -----------------------------------------------------------------------// <copyright company="Fireasy"// email="faib920@126.com"// qq="55570729">// (c) Copyright Fireasy. All rights reserved.// </copyright>// -----------------------------------------------------------------------using CodeBuilder.Core.Initializers;using CodeBuilder.Core.Template;using CodeBuilder.Core.Variable;using Fireasy.Common.Extensions;using Fireasy.Common.Serialization;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Text;namespace CodeBuilder.Core{/// <summary>/// 变量辅助类。/// </summary>public class ProfileUnity{/// <summary>/// 载入变量对象。/// </summary>/// <param name="hosting">开发环境。</param>/// <param name="template">模板定义。</param>/// <returns></returns>public static Profile LoadProfile(IDevHosting hosting, TemplateDefinition template){string fileName;var profile = ProfileExtensionManager.Build(template);if (!string.IsNullOrEmpty(template?.TId)){fileName = Path.Combine(hosting.WorkPath, "profiles", "template." + template.TId + ".profile");if (File.Exists(fileName)){return InitializerUnity.Initialize(hosting, FillByFile(profile, fileName), template);}}fileName = Path.Combine(hosting.WorkPath, "config", "profile.cfg");return InitializerUnity.Initialize(hosting, FillByFile(profile, fileName), template);}/// <summary>/// 载入变量对象。/// </summary>/// <param name="hosting">开发环境。</param>/// <param name="template">模板定义。</param>/// <param name="profileName">变量存储文件。</param>/// <returns></returns>public static Profile LoadProfile(IDevHosting hosting, TemplateDefinition template, string profileName){if (File.Exists(profileName)){var profile = ProfileExtensionManager.Build(template);return InitializerUnity.Initialize(hosting, FillByFile(profile, profileName), template);}return LoadProfile(hosting, template);}/// <summary>/// 将变量保存到本地。/// </summary>/// <param name="hosting">开发环境。</param>/// <param name="templateUId">模板UID。</param>/// <param name="profile">变量。</param>public static void SaveFile(IDevHosting hosting, string templateUId, Profile profile){string fileName;if (string.IsNullOrEmpty(templateUId)){fileName = Path.Combine(hosting.WorkPath, "config", "profile.cfg");}else{var path = Path.Combine(hosting.WorkPath, "profiles");if (!Directory.Exists(path)){Directory.CreateDirectory(path);}fileName = Path.Combine(path, "template." + templateUId + ".profile");}SaveAsFile(profile, fileName);}/// <summary>/// 使用本地文件来填充变量。/// </summary>/// <param name="profile">变量。</param>/// <param name="filePath">文件路径。</param>/// <returns></returns>public static Profile FillByFile(Profile profile, string filePath){var profileType = profile.GetType();var content = File.ReadAllText(filePath);var json = new JsonSerializer();var dyobj = (IDictionary<string, object>)json.Deserialize<dynamic>(content);if (profile is IProfileInfo info){info.FileName = filePath;}foreach (var kvp in dyobj){var p = profileType.GetProperty(kvp.Key);if (p != null && p.CanWrite){p.SetValue(profile, kvp.Value, null);}}return profile;}/// <summary>/// 将变量保存到文件。/// </summary>/// <param name="profile">变量。</param>/// <param name="filePath">文件路径。</param>public static void SaveAsFile(Profile profile, string filePath){var option = new JsonSerializeOption { Indent = true };var members = profile.GetType().GetProperties().Where(s => s.IsDefined<UnPersistentlyAttribute>()).OfType<MemberInfo>().ToList();option.ExclusiveMembers = members;var json = new JsonSerializer(option);var content = json.Serialize(profile);File.WriteAllText(filePath, content, Encoding.UTF8);}/// <summary>/// 验证变量中的属性必填项。/// </summary>/// <param name="profile">变量。</param>/// <returns></returns>public static string ValidateProfile(Profile profile){var sb = new StringBuilder();var properties = profile.GetType().GetProperties().Where(s => s.IsDefined<RequiredCheckAttribute>()).ToList();foreach (var property in properties){var value = property.GetValue(profile);if (value == null){sb.AppendLine(string.Format("{0} 为空", property.Name));}}return sb.ToString();}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。