Beispiel #1
0
        public override Expression VisitArrayInitializer([NotNull] RuleEngineParser.ArrayInitializerContext context)
        {
            var variableInitializerContexts = context.variableInitializer();
            var expressions = variableInitializerContexts.Select(vic => VisitVariableInitializer(vic));
            var expression  = expressions.First();

            var typeName = $"HashSet<{expression.Type.Name}>";
            var type     = jRuleObjectTypeMapping.GetType(typeName);

            if (type == null)
            {
                throw new NotSupportedException($"Not support type '{typeName}'.");
            }
            var newExpression = Expression.New(type);

            return(Expression.ListInit(newExpression, expressions));
        }
Beispiel #2
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="RuleEngineParser.arrayInitializer"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitArrayInitializer([NotNull] RuleEngineParser.ArrayInitializerContext context)
 {
     return(VisitChildren(context));
 }