示例#1
0
 public ExprDotEvalRootChild(bool hasEnumerationMethod, ExprDotNode dotNode, ExprEvaluator rootNodeEvaluator, ExprEvaluatorEnumeration rootLambdaEvaluator, EPType typeInfo, ExprDotEval[] evalIteratorEventBean, ExprDotEval[] evalUnpacking, bool checkedUnpackEvent)
 {
     _dotNode = dotNode;
     if (rootLambdaEvaluator != null)
     {
         if (typeInfo is EventMultiValuedEPType)
         {
             _innerEvaluator = new InnerEvaluatorEnumerableEventCollection(
                 rootLambdaEvaluator, ((EventMultiValuedEPType)typeInfo).Component);
         }
         else if (typeInfo is EventEPType)
         {
             _innerEvaluator = new InnerEvaluatorEnumerableEventBean(
                 rootLambdaEvaluator, ((EventEPType)typeInfo).EventType);
         }
         else
         {
             _innerEvaluator = new InnerEvaluatorEnumerableScalarCollection(
                 rootLambdaEvaluator, ((ClassMultiValuedEPType)typeInfo).Component);
         }
     }
     else
     {
         if (checkedUnpackEvent)
         {
             _innerEvaluator = new InnerEvaluatorScalarUnpackEvent(rootNodeEvaluator);
         }
         else
         {
             var returnType = rootNodeEvaluator.ReturnType;
             if (hasEnumerationMethod && returnType.IsArray)
             {
                 if (returnType.GetElementType().IsPrimitive)
                 {
                     _innerEvaluator = new InnerEvaluatorArrPrimitiveToColl(rootNodeEvaluator);
                 }
                 else
                 {
                     _innerEvaluator = new InnerEvaluatorArrObjectToColl(rootNodeEvaluator);
                 }
             }
             else if (hasEnumerationMethod && TypeHelper.IsImplementsInterface(returnType, typeof(ICollection <EventBean>)))
             {
                 _innerEvaluator = new InnerEvaluatorColl(rootNodeEvaluator);
             }
             else
             {
                 _innerEvaluator = new InnerEvaluatorScalar(rootNodeEvaluator);
             }
         }
     }
     _evalUnpacking         = evalUnpacking;
     _evalIteratorEventBean = evalIteratorEventBean;
 }
示例#2
0
 public ExprDotNodeForgeRootChildEval(
     ExprDotNodeForgeRootChild forge,
     ExprDotEvalRootChildInnerEval innerEvaluator,
     ExprDotEval[] evalIteratorEventBean,
     ExprDotEval[] evalUnpacking)
 {
     this.forge = forge;
     this.innerEvaluator = innerEvaluator;
     this.evalIteratorEventBean = evalIteratorEventBean;
     this.evalUnpacking = evalUnpacking;
 }