public string GetRealText(string str, IContext context)
        {
            if (string.IsNullOrEmpty(str))
            {
                return(string.Empty);
            }

            var paramInfos = ParamsUtil.GetParams(context, str);

            return(ParamsUtil.ApplyParams(str, paramInfos.Item1, paramInfos.Item2));
        }
Esempio n. 2
0
        public static Delegate GetDelegate(IContext context, string eval, object data)
        {
            var usedParams = ParamsUtil.GetParams(context, eval).Item1.ParamsToDictionary(true);
            var count      = usedParams.Count;

            if (count > 0)
            {
                for (var i = count - 1; i >= 0; i--)
                {
                    var item = usedParams.ElementAt(i);
                    if (!item.Key.Contains(SqlKeyWorld.Spot))
                    {
                        continue;
                    }

                    usedParams.Remove(item.Key);
                    var newKey = item.Key.Replace(SqlKeyWorld.Spot, SqlKeyWorld.Underline);
                    eval = eval.Replace(item.Key, newKey);
                    usedParams.Add(newKey, item.Value);
                }
            }

            Delegate @delegate;

            if (data != null)
            {
                var paramTypes = new Dictionary <string, Type>();
                paramTypes.Add(Data, data.GetType());
                @delegate = LambdaEngine.ExpressionBuilder.Build(eval, usedParams, paramTypes);
            }
            else
            {
                @delegate = LambdaEngine.ExpressionBuilder.Build(eval, usedParams);
            }

            return(@delegate);
        }