示例#1
0
        public IEnumerable <DictionaryBinderItem> GetItems()
        {
            foreach (var item in _collection)
            {
                var advResolver = new AdvancedDataResolver(n => item[n]);

                var text  = ExpressionEvaluator.Eval(_textExpression, advResolver);
                var value = ExpressionEvaluator.Eval(_valueExpression, advResolver);

                var binder = new DictionaryBinderItem(text, value);
                yield return(binder);
            }
        }
示例#2
0
        private Object EvalObj(String expression, XMLContext context)
        {
            if (String.IsNullOrEmpty(expression))
            {
                return(null);
            }

            var advResolver = new AdvancedDataResolver(context.GetValue);
            var expNode     = ExpressionParser.GetOrParse(expression);

            var result = ExpressionEvaluator.Eval(expNode, advResolver);

            return(result);
        }
示例#3
0
        private Object GetExpressionsValue(String expression, IDataItem item)
        {
            ExpressionNode expNode;

            if (!_expressionCache.TryGetValue(expression, out expNode))
            {
                expNode = ExpressionParser.Parse(expression);
                _expressionCache.Add(expression, expNode);
            }

            var advResolver = new AdvancedDataResolver(item.GetValueOrDefault);

            var expValue = ExpressionEvaluator.Eval(expNode, advResolver);

            return(expValue);
        }