コード例 #1
0
        TargetType EvaluateExpressionType(ScriptingContext context, string expression)
        {
            try {
                Expression expr = context.ParseExpression(expression);

                Expression resolved = expr.TryResolveType(context);
                if (resolved != null)
                {
                    expr = resolved;
                }
                else
                {
                    expr = expr.Resolve(context);
                }
                if (expr == null)
                {
                    Assert.Fail("Cannot resolve expression `{0}'.", expression);
                }

                return(expr.EvaluateType(context));
            } catch (ScriptingException) {
                throw;
            } catch (AssertionException) {
                throw;
            } catch (Exception ex) {
                Assert.Fail("Failed to evalaute type of expression `{0}': {1}",
                            expression, ex);
                return(null);
            }
        }
コード例 #2
0
        object EvaluateExpression(ScriptingContext context, string expression)
        {
            try {
                Expression expr = context.ParseExpression(expression);

                expr = expr.Resolve(context);
                if (expr == null)
                {
                    Assert.Fail("Cannot resolve expression `{0}'.", expression);
                }

                object obj = expr.Evaluate(context);
                if (obj == null)
                {
                    Assert.Fail("Failed to evaluate expression `{0}.", expression);
                }

                return(obj);
            } catch (ScriptingException) {
                throw;
            } catch (AssertionException) {
                throw;
            } catch (Exception ex) {
                Assert.Fail("Failed to evalaute expression `{0}': {1}",
                            expression, ex);
                return(null);
            }
        }