예제 #1
0
        private Expression(string expressionString)
        {
            TkDebug.AssertArgumentNullOrEmpty(expressionString, "expressionString", null);

            fParser = ExpressionParser.ParseExpression(expressionString);
            TkDebug.ThrowIfNoGlobalVariable();
            PlugInFactoryManager factories    = BaseGlobalVariable.Current.FactoryManager;
            BasePlugInFactory    paramFactory = factories.GetCodeFactory(
                ParamExpressionPlugInFactory.REG_NAME);
            BasePlugInFactory exprFactory = factories.GetCodeFactory(
                ExpressionPlugInFactory.REG_NAME);

            fExpressions = new List <BaseExpressionItem>();

            foreach (string item in fParser.ParamArray)
            {
                string             firstChar = item[0].ToString();
                BaseExpressionItem expressionItem;
                if (paramFactory.Contains(firstChar))
                {
                    IParamExpression expression = paramFactory.CreateInstance <IParamExpression>(firstChar);
                    string           parameter  = item.Substring(1);
                    expressionItem = new ParamExpressionItem(expression, parameter);
                }
                else
                {
                    IExpression expression = exprFactory.CreateInstance <IExpression>(item);
                    expressionItem = new ExpressionItem(expression, item);
                }
                fExpressions.Add(expressionItem);
            }
        }
예제 #2
0
 /// <summary>
 /// Initializes a new instance of the ParamExpressionItem class.
 /// </summary>
 /// <param name="expression"></param>
 /// <param name="parameter"></param>
 public ParamExpressionItem(IParamExpression expression, string parameter)
 {
     fExpression = expression;
     Name        = parameter;
     fAttribute  = Attribute.GetCustomAttribute(expression.GetType(),
                                                typeof(ParamExpressionAttribute)) as ParamExpressionAttribute;
     TkDebug.AssertNotNull(fAttribute, string.Format(ObjectUtil.SysCulture,
                                                     "此处错误不该发生,因为插件{0}应该附着了相应的Attribute", expression.GetType()), expression);
     SqlInject = fAttribute.SqlInject;
 }