Beispiel #1
0
        private static void SetDiagram(ExpressionSettings settings)
        {
            if (settings.Diagram == null && _container != null)
            {
                var diagramId = settings.DiagramId ?? settings.Name;

                settings.Diagram = _container.Diagrams.FirstOrDefault(d => d.Id == diagramId);
            }
        }
Beispiel #2
0
        private static ExpressionDefinition Create(ExpressionSettings settings,
                                                   Delegate expression, Dictionary <string, Type> sourceTypes)
        {
            // todo: walidacja expression (np sprawdzenie argumentow i rezultatu)

            return(new ExpressionDefinition
            {
                CompiledExpression = expression,
                SourceTypes = sourceTypes,
                ExpressionString = settings.CodeSample,
                Name = settings.Name,
                Description = settings.Description,
                Diagram = settings.Diagram
            });
        }
Beispiel #3
0
        private static void SetNameAndDescription(ExpressionSettings settings)
        {
            if (settings.Operator != null)
            {
                if (settings.Name == null)
                {
                    settings.Name = settings.Operator.Name;
                }

                if (settings.Description == null)
                {
                    settings.Description = settings.Operator.GetSummary();
                }
            }
        }
Beispiel #4
0
        public static ExpressionDefinition Create(Delegate @delegate, ExpressionSettings settings)
        {
            if (@delegate == null)
            {
                throw new ArgumentNullException("delegate");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            SetNameAndDescription(settings);
            SetDiagram(settings);

            return(Create(settings, @delegate, @delegate.Method.GetParameters().ToDictionary(p => p.Name, p => p.ParameterType)));
        }
Beispiel #5
0
        public static ExpressionDefinition Create(LambdaExpression expression, ExpressionSettings settings)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            settings.Operator = settings.Operator ?? GetOperator(expression);

            SetNameAndDescription(settings);
            SetDiagram(settings);

            if (settings.CodeSample == null)
            {
                settings.CodeSample = expression.ToString();
            }

            return(Create(settings, expression.Compile(), expression.Parameters.ToDictionary(p => p.Name, p => p.Type)));
        }