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; }
public ExprDotNodeForgeRootChildEval( ExprDotNodeForgeRootChild forge, ExprDotEvalRootChildInnerEval innerEvaluator, ExprDotEval[] evalIteratorEventBean, ExprDotEval[] evalUnpacking) { this.forge = forge; this.innerEvaluator = innerEvaluator; this.evalIteratorEventBean = evalIteratorEventBean; this.evalUnpacking = evalUnpacking; }