/// <summary> /// 计算表达式字典 /// </summary> /// <param name="strFuncName"></param> /// <param name="arrParams"></param> /// <param name="calcContext"></param> /// <returns></returns> private static object CalculateExpressionDictionary(string strFuncName, ParamObjectCollection arrParams, CalculateContext calcContext) { ExpressionDictionaryCollection dictionaries = (ExpressionDictionaryCollection)ObjectContextCache.Instance.GetOrAddNewValue( "ExpressionDictionaries", (cache, key) => { ExpressionDictionaryCollection expDicts = new ExpressionDictionaryCollection(); expDicts.InitFromConfiguration(ExpressionDictionarySettings.GetConfig()); cache.Add("ExpressionDictionaries", expDicts); return(expDicts); }); ExpressionDictionary dictionary = dictionaries[strFuncName]; object oValue = null; if (dictionary != null) { ExpressionDictionaryCalculatorContext context = new ExpressionDictionaryCalculatorContext(dictionary, calcContext.CallerContxt); string key = string.Empty; if (arrParams.Count > 0 && arrParams[0].Value != null) { key = arrParams[0].Value.ToString(); } oValue = dictionary.Calculator.Calculate(strFuncName, key, context); } return(oValue); }
/// <summary> /// /// </summary> /// <param name="settings"></param> public void InitFromConfiguration(ExpressionDictionarySettings settings) { settings.NullCheck("settings"); foreach (ExpressionDictionaryConfigurationElement element in settings.Dictionaries) { this.Add(new ExpressionDictionary(element)); } }
/// <summary> /// 获得表达式预定义字典的配置信息 /// </summary> /// <returns></returns> public static ExpressionDictionarySettings GetConfig() { ExpressionDictionarySettings settings = (ExpressionDictionarySettings)ConfigurationBroker.GetSection("expressionDictionarySettings"); if (settings == null) { settings = new ExpressionDictionarySettings(); } return(settings); }