using Apewer; using Apewer.Internals; using System; using System.Collections.Generic; using System.Text; namespace Apewer { /// public class Configuration { private static Json _json = null; private static bool _loaded = false; private static Json JsonFile { get { if (!_loaded) Load(); return _json ?? Json.NewObject(); } } private static string GetPath() { if (StorageUtility.FileExists("config.json")) { return "config.json"; } if (StorageUtility.FileExists("configuration.json")) { return "configuration.json"; } try { var type = typeof(Configuration); var path = System.IO.Path.GetDirectoryName(type.Assembly.CodeBase); if (path.StartsWith("file:\\") && path.Length > 6) path = path.Substring(6); var ad_config = path + "\\..\\app_data\\config.json"; if (StorageUtility.FileExists(ad_config)) return ad_config; var ad_configuration = path + "\\..\\app_data\\configuration.json"; if (StorageUtility.FileExists(ad_configuration)) return ad_configuration; var wr_config = path + "\\..\\config.json"; if (StorageUtility.FileExists(ad_config)) return wr_config; var wr_configuration = path + "\\..\\configuration.json"; if (StorageUtility.FileExists(ad_configuration)) return ad_configuration; } catch { } return null; } /// 从默认路径加载配置文件,默认文件名为 config.json 和 configuration.json。 public static bool Load() { var path = GetPath(); if (path != null && StorageUtility.FileExists(path)) { var text = TextUtility.FromBytes(StorageUtility.ReadFile(path, true)); var loaded = Load(text); if (loaded) return true; } return false; } /// 加载配置文件。 public static bool Load(string json) { var text = json; _json = Json.From(text); return _json != null; } /// 获取配置文件中的属性。 public static Json GetProperties(Type type) { if (type == null) return null; var result = GetProperties((string)type.FullName); return result; } /// 获取配置文件中的属性。 public static Json GetProperties(string type) { if (TextUtility.IsBlank(type)) return null; var config = JsonFile; if (config == null) return null; return config.GetProperty(type); } } }