Ejemplo n.º 1
0
        private EvaluationContext GetEvaluationContext(string contextId)
        {
            XElement contextEl = ConfigRoot.Descendants("evalContext")
                                 .Where(el => el.Attribute("id").Value == contextId).Single();

            var ec = new EvaluationContext();

            ec.Id = contextEl.Attribute("id").Value;

            foreach (XElement evalEl in contextEl.Descendants("evaluator"))
            {
                Evaluator eval;
                Type      evalType = Helpers.ResolveType(evalEl.Attribute("class").Value.Inject(Parameters));
                if (!typeof(Evaluator).IsAssignableFrom(evalType))
                {
                    throw new WrapRecException(string.Format("Evaluator type '{0}' should inherit class 'WrapRec.Evaluation.Evaluator'", evalType.Name));
                }

                eval = (Evaluator)evalType.GetConstructor(Type.EmptyTypes).Invoke(null);
                eval.SetupParameters = evalEl.Attributes().ToDictionary(a => a.Name.LocalName, a => a.Value.Inject(Parameters));

                ec.AddEvaluator(eval);
            }

            return(ec);
        }