AjScript.Expressions.NewExpression.Evaluate C# (CSharp) Метод

Evaluate() публичный Метод

public Evaluate ( IContext context ) : object
context IContext
Результат object
        public object Evaluate(IContext context)
        {
            object value = null;

            if (this.expression is DotExpression)
            {
                DotExpression dotexpr = (DotExpression)this.expression;
                value = dotexpr.TryEvaluate(context);
            }
            else
                value = this.expression.Evaluate(context);

            Type type = null;

            if (!(value is IFunction))
            {
                if (this.expression is VariableExpression)
                {
                    type = TypeUtilities.GetType(context, ((VariableExpression)this.expression).Name);
                }
                else if (this.expression is DotExpression)
                {
                    type = ((DotExpression)this.expression).AsType();
                }
            }

            object[] parameters = null;

            if (this.arguments != null && this.arguments.Count > 0)
            {
                List<object> values = new List<object>();

                foreach (IExpression argument in this.arguments)
                    values.Add(argument.Evaluate(context));

                parameters = values.ToArray();
            }

            if (value is IFunction)
                return ((IFunction)value).NewInstance(parameters);

            return Activator.CreateInstance(type, parameters);
        }

Usage Example

Пример #1
0
        public void EvaluateSimpleNewExpression()
        {
            IExpression expression = new NewExpression("System.Data.DataSet", null);

            object result = expression.Evaluate(new Context());

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(System.Data.DataSet));
        }
All Usage Examples Of AjScript.Expressions.NewExpression::Evaluate