Example #1
0
        protected ExpressionElement BuildCurrentExpressionElement(MethodInfo methodInfo, ExpressionAttribute expressionAttribute)
        {
            if (ExpressionServices.ContainsKey(expressionAttribute.Key))
            {
                throw new Exception(string.Format("The expression service with key '{0}' has already existed.", expressionAttribute.Key));
            }

            var parameters = methodInfo.GetParameters();

            if (parameters.Length == 1 && typeof(IExpression).IsAssignableFrom(parameters[0].ParameterType))
            {
                var func = (Func <IExpression, object>)Delegate.CreateDelegate(typeof(Func <IExpression, object>), this, methodInfo);
                ExpressionServices.Add(expressionAttribute.Key, func);
            }

            expressionAttribute.Name = (string.IsNullOrEmpty(expressionAttribute.Name)) ? methodInfo.Name : expressionAttribute.Name;
            var exp = new ExpressionElement
            {
                ReturnDataType  = expressionAttribute.ReturnDataType,
                Description     = expressionAttribute.Description,
                Filter          = expressionAttribute.Filter,
                Key             = expressionAttribute.Key,
                Name            = expressionAttribute.Name,
                AssemblyName    = this.GetType().Assembly.ManifestModule.Name,
                IsDynamic       = expressionAttribute.IsDynamic,
                InheritDataType = expressionAttribute.InheritDataType
            };

            return(exp);
        }
Example #2
0
        protected void BuildCurrentExpressionParameterElement(ExpressionElement exp, ExpressionTemplateAttribute templateAttribute, ExpressionParameterAttribute parameterAttribute)
        {
            var key = string.Format("{0}.{1}", templateAttribute.Key, parameterAttribute.Name);

            if (TemplateDic.ContainsKey(key))
            {
                TemplateDic.TryGetValue(key, out exp);
            }
            else
            {
                if (parameterAttribute != null)
                {
                    foreach (var item in exp.Parameters)
                    {
                        //exp.Parameters.Add(new ExpressionParameterElement() { Default = ""});
                        TemplateDic.Add(key, exp);
                    }
                }
            }
        }
Example #3
0
 private void BuildExpressionParameterElement(ExpressionElement exp, object[] expreesionTemplateAttribute, object[] paramterAttributes)
 {
     if (expreesionTemplateAttribute.Length > 0)
     {
         var templateAttribute = expreesionTemplateAttribute.SingleOrDefault() as ExpressionTemplateAttribute;
         foreach (var o in paramterAttributes)
         {
             var parameterAttribute = o as ExpressionParameterAttribute;
             BuildCurrentExpressionParameterElement(exp, templateAttribute, parameterAttribute);
         }
     }
     else
     {
         foreach (var o in paramterAttributes)
         {
             var parameterAttribute = o as ExpressionParameterAttribute;
             BuildDefaultExpressionParameterElement(exp, parameterAttribute);
         }
     }
 }
Example #4
0
 protected void BuildDefaultExpressionParameterElement(ExpressionElement exp, ExpressionParameterAttribute expressionParameterAttribute)
 {
     if (expressionParameterAttribute != null)
     {
         exp.Parameters.Add(new ExpressionParameterElement
         {
             DataType           = expressionParameterAttribute.DataType,
             Description        = expressionParameterAttribute.Description,
             Filter             = expressionParameterAttribute.Filter,
             Key                = expressionParameterAttribute.Name,
             Name               = expressionParameterAttribute.Name,
             Default            = expressionParameterAttribute.Default,
             DefaultExpression  = expressionParameterAttribute.DefaultExpression,
             Priority           = expressionParameterAttribute.Priority,
             ManualExecute      = expressionParameterAttribute.ManualExecute,
             EnumSourceTypeName = expressionParameterAttribute.EnumSource == null ? null : expressionParameterAttribute.EnumSource.AssemblyQualifiedName,
             DynamicTypeLoader  = expressionParameterAttribute.DynamicTypeLoader,
             InheritDataType    = expressionParameterAttribute.InheritDataType,
         });
     }
 }