Exemplo n.º 1
0
        public override object Execute(IResolver resolver)
        {
            object leftResult = left.Execute(resolver);

            if (leftResult == null)
            {
                throw new Exception(String.Format("Formula error: Cannot get value of {0}.{1} because {0} is Null.",
                                                  left.ToString(), right.ToString()));
            }
            if (right is IdentifierNode)
            {
                return(resolver.GetMemberValue(leftResult, ((IdentifierNode)right).Identifier));
            }
            else
            {
                FunctionCallNode functionNode = (FunctionCallNode)right;
                functionNode.DeclaringType = leftResult.GetType();
                return(functionNode.Execute(leftResult, resolver));
            }
        }