Ejemplo n.º 1
0
        public void EvalMethod_GetResult_return_result_of_method()
        {
            var model = new ModelWithMethod(null, "123");

            var evaluator = new TemplateEvaluator(model);

            var element = new MethodCallTemplateElement
            {
                MethodName = "GetText"
            };

            evaluator.EvalMethod(element);

            Assert.AreEqual("123", evaluator.GetResult());
        }
Ejemplo n.º 2
0
        public void EvalMethod_throw_TemplateEvaluateException_if_method_does_not_exist()
        {
            var model = new Model(null);

            var evaluator = new TemplateEvaluator(model);

            var element = new MethodCallTemplateElement
            {
                MethodName = "SomeMethod"
            };

            var exception = Assert.Throws <TemplateEvaluateException>(() => evaluator.EvalMethod(element));

            Assert.AreEqual("Method with name 'SomeMethod' does not exist in model.", exception.Message);
        }
        internal void EvalMethod(MethodCallTemplateElement element)
        {
            MethodInfo[] methods    = _model.GetType().GetMethods();
            string       methodName = element.MethodName;

            MethodInfo[] methodsWithSameName = methods.Where(info => info.Name == methodName).ToArray();
            if (methodsWithSameName.Length < 1)
            {
                throw new TemplateEvaluateException($"Method with name '{methodName}' does not exist in model.");
            }

            MethodInfo method = methodsWithSameName.Single();
            object     invoke = method.Invoke(_model, new object[0]);

            _result.Append(invoke);
        }