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); }