/// <summary> /// 将配置的策略lua数据对象 转换成 C#策略对象 /// </summary> /// <param name="policyValue">JSON数据对象</param> /// <param name="policyType">策略类型</param> /// <returns></returns> protected object GetPolicyValue(object policyValue, Type policyType) { if (policyValue.GetType() != policyType) { return(CommonExtensions.JsonToObjectNeedDefaultValue(JsonConvert.SerializeObject(policyValue), policyType)); } return(policyValue); }
/// <summary> /// 加载sql的配置文件 /// </summary> /// <param name="sqlConfig"></param> /// <param name="configFilePath"></param> /// <param name="encoding"></param> public static void LoadFile(this ISqlConfig sqlConfig, string configFilePath, Encoding encoding) { var config = CommonExtensions.JsonToObjectNeedDefaultValue <JsonConfigTableInfo>(File.ReadAllText(configFilePath, encoding)); if (string.IsNullOrEmpty(config.Name)) { config.Name = Path.GetFileNameWithoutExtension(configFilePath); } sqlConfig.AddOrCombine(config); }
protected void AddDefaultPolicy <T>(Type ptype, Func <T> getExecutorFunc, int priority, bool isAddPolicyObj = false) { var pname = _util.GetSqlConfigPolicyName(ptype); _policyMgr.PolicyTypes[pname] = ptype; //添加策略执行器 if (getExecutorFunc != null) { _policyMgr.SetExecutor(pname, getExecutorFunc, priority); } //添加默认的全局策略对象 if (isAddPolicyObj) { //使用JsonConvert目的为了生成默认的数据对象 var policyObj = CommonExtensions.JsonToObjectNeedDefaultValue("{}", ptype); _policyMgr.GlobalPolicies[_util.GetSqlConfigPolicyName(ptype)] = (ISqlConfigPolicy)policyObj; } }