Ejemplo n.º 1
0
        public virtual IRPResultNode EvaluateElement(IRPResultNode resultNode, IEnumerable <IRPElement> elements)
        {
            if (!elements.Any())
            {
                return(resultNode);
            }

            IRPElement element = elements.First();

            if (!_rpElementRPResultNodeBuilderPairs.ContainsKey(element.GetType()))
            {
                throw new Exception($"{element.GetType()} does not have an associated RPResultNodeBuilder");
            }

            Type rpResultNodeBuilderType = _rpElementRPResultNodeBuilderPairs[element.GetType()];

            if (rpResultNodeBuilderType.GetMethod("EvaluateElement").DeclaringType == typeof(RPResultNodeBuilder))
            {
                throw new Exception($"{rpResultNodeBuilderType} does not implement the EvaluateElement method.");
            }

            IRPResultNodeBuilder resultNodeBuilder = (IRPResultNodeBuilder)Activator.CreateInstance(rpResultNodeBuilderType);

            return(resultNodeBuilder.EvaluateElement(resultNode, elements));
        }
Ejemplo n.º 2
0
 public RPEvaluator(IRPResultNodeBuilder builder)
 {
     _builder = builder;
 }