public void ExpressionDictionaryInfoTest() { ExpressionDictionaryCollection dictionaryInfo = new ExpressionDictionaryCollection(); dictionaryInfo.InitFromConfiguration(ExpressionDictionarySettings.GetConfig()); Assert.IsTrue(dictionaryInfo.Count > 0); Assert.IsNotNull(dictionaryInfo["Users"]); Assert.IsTrue(dictionaryInfo["Users"].Items.Count > 0); Assert.AreEqual("Name", dictionaryInfo["Users"].Items["Name"].Name); Assert.AreEqual("年龄", dictionaryInfo["Users"].Items["Age"].Description); Assert.AreEqual(ExpressionDataType.DateTime, dictionaryInfo["Users"].Items["Birthday"].DataType); }
/// <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; }