Example #1
0
        public void TestMethod_26()
        {
            Dictionary<string, object> vars = new Dictionary<string, object>();
            vars["_sprint_context_resove_"] = new SprintContextResove((type,name) =>
            {
                if (name == "Inventor") return new Inventor("a", DateTime.Now, "d");
                return new Inventor2("a", DateTime.Now, "d");
            });

           // var IsMember = ExpressionEvaluator.GetValue(null, "@(Inventor).IsMember('Nikola Tesla1')", vars);
            var IsMember2 = ExpressionEvaluator.GetValue(null, "@(SpringELTest.Inventor2,SpringELTest@ddd).IsMember('Nikola Tesla1')", vars);

        }
Example #2
0
        /// <summary>
        /// Returns a value for the integer literal node.
        /// </summary>
        /// <param name="context">Context to evaluate expressions against.</param>
        /// <param name="evalContext">Current expression evaluation context.</param>
        /// <returns>Node's value.</returns>
        protected override object Get(object context, EvaluationContext evalContext)
        {
            if (!evalContext.Variables.TryGetValue("_sprint_context_resove_", out object Resove))
            {
                return(null);
            }

            string objectName;

            if (this.getNumberOfChildren() == 2)
            {
                objectName = this.getFirstChild().getNextSibling().getText();
            }
            else
            {
                objectName = this.getFirstChild().getText();
            }

            SprintContextResove deResove = (SprintContextResove)Resove;

            var typeName = objectName.Split('@');

            if (typeName.Length > 2)
            {
                throw new TypeMismatchException($"`{objectName}` formatter invalid");
            }

            Type type = System.Type.GetType(typeName[0], false);

            if (type == null)
            {
                return(deResove.Invoke(null, typeName.FirstOrDefault()));
            }

            return(deResove.Invoke(type, typeName.Length > 1?typeName.Last():null));
        }