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); } }
/// <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; }